***みなさん、こんにちは!毎週土曜日はなんとなくVBAの更新日になっているタカハシ(@ntakahashi0505)です。請求データ一覧から請求書を自動で作成するシリーズのVBA講座もいよいよ9回目となりました。初心者向けにエクセルVBAで請求データ一覧から請求書を自動で作成する方法をお伝えしています。今回はワークシートをコピーする方法、Activesheetの使い方、シート名を変更する方法についてお伝えします。tonari-it.com2015.07.04のですが、実はそのままだと少し問題があります。今回はWorksheetのコピーではなくて、ファイルつまりWorkbookのコピーに方針を切り替えることでその問題を解決する方法を解説したいと思います。前回のおさらいWorkbookのコピーに方針を切り替えるWorkbookのコピーを活用した請求書作成の方針FileCopyでファイルをコピーするThisWorkbook.Pathで現在のフルパスを取得Workbooks.Openでファイルを開くまとめ連載目次:データ一覧から請求書を自動で作る前回のおさらいモジュールレベル変数の宣言です。'「取引先マスタ」の行数ワークシート初期化用のプロシージャがこちらです。Subそして本体のプロシージャです。Sub取引先マスタに記載されているクライアント数の分だけ請求書ひな形シートをコピーコピーしたシート名を該当の取引先名にするそのシートに請求データの該当の取引先に関するデータのみ転記をするという処理を行う形です。プログラムっぽくなってきましたね。このプログラムは一点問題があります。Workbookのコピーに方針を切り替える上記プログラムですが初回の実行時はいいのですが、二回目に実行するととこのようにエラーが出てしまいます。二回目の実行ですと、このように各取引先のシートが存在してしまっています。存在するシート名と重複するシート名をつけようとしてしまっているために、このようなエラーが出てしまうわけです。この回避の方法はいくつか考えられるのですが、WorksheetではなくてファイルつまりWorkbookのコピーに方針を切り替えることで解決していきます。方針としては「請求書ひな形」をシートを別のファイルに分離して「請求書ひな形.xlsx」ファイルとする「請求書ひな形.xlsx」をコピーして取引先ごとのファイルを新たに作成する取引先ごとのファイルに該当の取引先のデータを転記するというように進めていきます。コピー先ファイルで実行することができます。このそれぞれのファイルですが、拡張子まで含めたフルパスのファイル名で指定する必要があります。ThisWorkbook.Pathで現在のフルパスを取得フルパスを取得する必要がありますので、現在のWorkbookのパスを取得してそれを活用することにします。従って、コピー元ファイルとなる「請求書ひな形.xlsx」はVBAを組んでいるファイルと同じフォルダに保存してくださいね。VBAを記述しているWorkbookのパスはThisWorkbook.Pathで取得することができます。“.xlsx”でそれぞれ取得することができます。コピー先ファイルは請求月と取引先名を組み合わせたファイル名で作成しています。このようにすると、次の月に実行するときに請求月が変わることでファイル名も別になりますから、重複ファイルが存在していることによるエラーを防ぐことができます。Workbooks.Openでファイルを開くコピーしたファイルは開かないと活用することができません。開くファイルと記述します。'請求書ひな形シート用カウント変数、スタートは21行目~となります。コピー先のフルパスファイル名はstrFileという変数に格納をしています。'隠れている行を再表示するwsInvoice.Range("A21:C50").Clearこの二行は削除してOKです。いうのも、請求書ひな形はもともと初期化されている状態で、それを常にコピーして使うので必要なくなりました。完成したプログラムを実行するとこのようにそれぞれの取引先ごとの請求書が新たなファイルとして生成されます。まとめFileCopyでファイルをコピーするThisWorkbook.Pathで現在のフルパスを取得Workbook.Openでファイルを開くを使って、取引先ごとに別々のファイルで請求書を作成することができるようになりました。いずれもかなり使える命令ですので、ぜひ覚えておいてくださいね。まとめのプログラムはこちらです。Sub次回ですが、本記事にコメントで頂いているお題について、SumIfs関数とDateAdd関数で解決をしていきますね。エクセルVBAでDateAdd関数を使って年月を条件としてSumIfs関数を使う方法エクセルVBAで請求データ一覧から請求書を自動で作成するシリーズです。Excel関数でおなじみのSumIfs関数を使って年月の判定をします。DateAdd関数という日付に追加する便利な関数も紹介しますよ。tonari-it.com2017.02.08どうぞお楽しみにっ!連載目次:データ一覧から請求書を自動で作るお仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。関連記事Excel・VBA活用術エクセルVBAでセルが結合されているかどうか、またそのセルの数を判定する方法エクセルVBAでセルが結合されているかどうか、またその結合されているセルの数を判定する方法を紹介します。結合セルがある場合のエクセル表をHTML形式に出力するプログラムも合わせて紹介します。「初心者でもわかる!エクセルVBAのクラスモジュールの活用法」をテーマに、その使い方と便利さについてシリーズでお伝えしていきます。今回は、エクセルVBAで最も簡単なクラスを作る方法をお伝えしていきます。VBA」が発売されます。3冊目の著作となった本作。この記事では、それを書き上げるのに、どれだけの文字を書いて、どれだけの時間をかけたのか、晒していきます。2019.11.22Excel・VBA活用術エクセルVBAでテーブルを走査して取引先ごとのブックを作るマクロ請求書の作成マクロを題材に、エクセルVBAでテーブルを操作する方法をお伝えしています。今回は、テーブルを走査して取引先ごとにブックを作成して、請求書のひな形シートをコピーするマクロを紹介します。今回は、Endプロパティを使って表の最終行番号を取得する方法をご紹介したいと思います。今回ご紹介するEndプロパティを使用することで、簡単に表の最終行を取得することができます。【エクセルVBA入門】マクロでVLookupメソッドを使ってデータを検索する方法エクセルVBAを使ってバラバラの経費精算書データを集約するシリーズの7回目です。今回は、業務で有効なテクニックとしてもう一つ、マスタシートからVLookupメソッドでデータを取得してくる方法についてお伝えしていきます。)が出てしまいコピーがうまくできません。開いているブックはコピーできないようなのですが、回避するにはどうしたらよろしいでしょうか。AMご覧いただきましてありがとうございます!おっしゃる通り、開いているブックは残念ながらFileCopyでコピーをすることができません。請求書ひな形.xlsxというファイル名の指定になっています。コピー元ファイルである「請求書ひな形.xlsx」を閉じた状態で実行していただければFileCopyができると思います。AMお返事ありがとうございます。請求データ.xlsmだけで完結させる必要はなかったんですね。ありがとうございます。AMne9999さんと同じところで躓きました。一度下まで目を通していたので、読み直して修正、うまくいきました!ナイス質問ありがとうございます。何度も行きつ戻りつしながらなんとか完成しました。これまでもVBAに挑戦しながらもなかなかものにならなかったのですが、こちらはとても実用的なサンプルだったので最後までやり通せました。メンバーへの支払い明細票を作成したかったので、ほぼそのまま活用出来ます。これからひな形の修正に入ります。本当にありがとうございました。他の記事もこれから読ませていただきますね。PMべすさん、コメントありがとうございます!お役に立てたようで大変うれしく思います。皆さんがスムーズにできるように気を付けておりますが、もし何かお気づきの点がありましたら遠慮なくご連絡を頂ければと思います。PM「請求データ一覧から請求書を自動で作成する」が何とか完成できました。有難うございました、事務仕事に活用したいと思います。一つ出来ないことがあります、それは伝票番号の転記です。挑戦してみたのですが、素人の私にはどのようにしても無理でした。ご指導のほど宜しくお願い致します。AM山本様、コメントありがとうございます!皆さまのお仕事に合わせて具体的な部分のアドバイスを差し上げることも可能ですので、よろしければこちらの問い合わせフォームかチャットワークにて詳細のご連絡を頂ければと思います。http://plannauts.co.jp/contact/どうぞよろしくお願いいたします。PMこんにちは!とても分かりやすく、初心者の私でも何とかゴール目前までたどりつくことができました。ありがとうございます。ファイルが見つかりません)となります。書き込んだプログラム自体をチェックしても素人目には問題なさそうで...。AMサトウ様いつもご覧いただきましてありがとうございます。PMタカハシ様エクセル克服できるようこちらのサイトで勉強させてもらっています!初心者でもわかりやすく助かっています。改めまして同じエラーメッセージがでたので書き込みさせていただきました。ひな形エクセルが原因かと思ったところ、実は前の行の記述ミスが原因でした。(コピー先ファイル名の記述にエクセルの拡張子入れ忘れ)修正したら無事成功しました!もし同様の原因でしたら参考になれば幸いです。PMヤマザキ様コメントありがとうございます!貴重な情報助かります。AMVBA初心者です。わかりやすく、ありがたく勉強させて頂いています。自力でなんとかと思ったのですが難しく、ご教示頂ければ幸いです。最終回の「ファイルコピーで得意先別請求書を作る」ですが、当月納品のない得意先もあると仮定して納品のあった得意先のみ請求書ファイルを作成する処理を教えて下さい。条件文はすでに記載のある転記処理の上のif文でよいと思うのですが、ファイルコピーをこの中に入れるとまずいでしょうし、if文の位置をトップに持ってくると考えると、全体の構成変更が必要のような気がしますし、頭の整理できなくなってしまいました。構成変更のヒントでも結構です。PMKana.Mさんコメントありがとうございます。nの中のブロック全体について、該当の取引先の該当月の納品がなければ処理をしない、とすればよいですね。ご質問頂いたので、記事にしてみたいと思います。PMこんにちは!こちらを参考にして仕事場での請求書を作成させて頂いてます。分かりやすく参考になります。質問なんですが、転記する期間を「yyyy/mm/dd」~「yyyy/mm/dd」までと入力方式での抽出にする事は可能でしょうか?あと、転記する取引先を入力もしくは選択方式で抽出できれば当方職場で完全に運用できる仕上がりになるのですが。ご教授頂ければ幸いです、宜しくお願い致します。AM配車係のSriani様ご質問ありがとうございます!なるほど...期間と取引先を詳細に入力する...ということですね。機会を見て記事にできればと思いますので、気長にお待ちいただけると助かります。今後ともどうぞよろしくお願いいたします。PMいつも楽しく勉強させていただいてます。ありがとうございます。お手すきのときにご回答いただければ幸いです。現象として2つ、余計なブックを作ろうとする、二社のブックが作られても必要項目の転機や計算がなされていない、が発生します。今回は2社のはずですがマクロを回すともう一つブックを作ろうとして結果「書き込めない」とエラーが出て終わります。見たら取引先マスタにひな形の一部の記述が加えられていました。できた二社のブックにしても請求書ひな形.xlsxをコピーしただけで必要項目の転記や計算がされてません。ActiveSheetの部分のActiveSheetに意図しないシートが指定されているのかなと考えて、いくら調べても検討もどうにも分かりません。請求書ひな形.xlsxファイルを作る際は、元々のファイルから単純に請求書ひな形シート”のみ”を分離すればよろしいのでしょうか。ご教授いただけます事をお願いいたします。自分なりに色々試して進捗がありましたので書かせていただきます。ActiveSheetの、ActiveSheetについて意図したシート(コピーしてできた各社のブックのシート)が指定されておらず、あらぬシートが指定されていることが分かりました。明示的にブックとシートを指定すれば問題なくマクロが回りました。稚拙な内容で申し訳ございませんでした。AMくらさまコメントありがとうございます。返信が遅くなりすみません。無事に解決されたようで良かったです。ActiveSheet...使わないようなサンプルにしたほうがよさそうですね。検討をしたいと思います。引き続き、当ブログをどうぞよろしくお願いいたします。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった2020.02.072020.02.08GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法2020.02.052020.02.05Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。