
こんにちは、VBA初心者です。有識者の型アドバイス頂けたら幸いです。
環境はOffice2016です。
行いたいことを下記します。
C:\ABC\1234.xlsx
シート名:原本(B3、B4、B5以外には色々と記載あります)
セル:B3 → yyyy
セル:B4 → mm
セル:B5 → dd
1.マクロを実行すると、入力メッセージが表示され、yyyy/mmを入力する。
2.1234.xlsxファイルをコピーし、入力した値よりmm月分.xlsxを作成する。
3.mm月分.xlsxに、1日、2日、3日~ のシート名で月末までのシートを作成する。
4.各シートのB3、B4、B5の値を、入力した値を元に変更する(例:2023 12 3)
5.土日、祝日のシートを、カレンダーもしくは別で定義した日付を元に削除する。
別で定義する際は、一年を通して事前に作成しておく。
上記になります。不明点などございましたらコメント頂ければと思います。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは
>VBA初心者です。有識者の型アドバイス頂けたら幸いです。
初心者を名乗る割にはそれなりに複雑なことを行おうとしているように思えますので、まずは手順を整理しましょう。
整理したうえで、その手順の部分ごとに結果を確認しながら作成してみて、それぞれが正常に動作する様になったら、連続して処理するようになされば宜しいでしょう。
VBAはその場ですぐに実行テストできますし、デバッグ用のツールも備わっていますので・・
ご提示の手順のままでも実行可能ですが、そのままだと「各手順ごとに、複数のファイルを順に処理する」ことが必要になってしまいそうです。
複数のファイルを同時並行で処理するのは、複雑になるもとでもあり、混乱を招きやすいと思われます。
これを避けるなら、「ファイルを開いて、処理したら、クローズする」ような手順かと思いますが、これを何度も繰り返すのは効率が悪すぎます。
例えば、「ひとつのファイルを作成したら、ご提示の3~5までの処理を行って保存する」ことをファイル数分繰り返す方が、考え方としてはシンプルになるのではと想像します。
また、3と5の処理を考えると、「一旦作成したシートを、後から削除する」ことになりますが、「作成する際に、要/不要を判断して、不要なら作成しない」ようにして、日数分繰り返す方が要領がよさそうに思います。
このようにして、実際の処理手順にほぼ近いものを、ご提示のような箇条書きにして作成したうえで、その部分ごとに動作確認をしながら作成してゆけば良いでしょう。
例えば、ご提示の1の部分であれば、
「入力をさせて、その内容を表示する」
だけのものを作成してみるということです。
(「内容を表示する」部分は実際には不要ですが、一区切りとして確認するためです)
「そんなの簡単すぎる」と思われるかも知れませんが、実際に作成する際には、
・「yyyy/mm」とは異なる値が入力されたらどうするか
・キャンセルや「X」のクリックでダイアログをクローズしたらどうするか
などといった、考慮すべき点がいくつか出てくるはずです。
当然、これらの場合についても処理を作成し、動作確認を行う必要があります。
部分を作成する際に不明点があれば、「マクロの記録」などを利用すると、どのような記述をすれば実現できるかのヒントを得ることができると思います。
(できれば、そのままを利用することは避けた方が要領の良いコードに繋がると思います)
それでもわからない部分があれば、検索してみるなり、再度質問してみることで解決策を得られる可能性があります。
このようにして、各パーツができたなら、これを組み合わせて「一つのファイルを作成する」コードにしてみましょう。
これが上手く動作するなら、それをmm個分作成するように順に繰り返せば良いことになりますね。
「そんな、面倒な事やってらんねぇ! 早くコードをよこせ!」
と言うのであれば、質問サイトなどで質問しているよりも、依頼サイトを利用するなり、取引のある業者に依頼するなりなさった方が、手っ取り早くかつ確実に結果を得られると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 転記先VBA 一致しているセルがコピーされない 5 2021/11/15 17:23
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) EXCEL VBA シート比較し〇×判定 1 2021/11/19 11:49
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) VBA シート名が一致した場合の転記内容について 2 2021/11/15 13:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
実行時エラー1004「Select メソ...
-
Excelマクロのエラーを解決した...
-
エクセルで通し番号を入れてチ...
-
Worksheet_Changeの内容を標準...
-
ユーザーフォームに入力したデ...
-
非表示シートのマクロ実行
-
VBA 指定した回数分、別シート...
-
シートが保護されている状態で...
-
XL:BeforeDoubleClickが動かない
-
別のシートから値を取得するとき
-
EXCEL(VBA)でシート保護がかか...
-
VBA 存在しないシートを選...
-
エクセルVBA Ifでシート名が合...
-
【ExcelVBA】全シートのセルの...
-
VBA マクロ シート 転記
-
VBAマクロでシートコピーした新...
-
エクセルのシート名変更で重複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報