アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは、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.土日、祝日のシートを、カレンダーもしくは別で定義した日付を元に削除する。
  別で定義する際は、一年を通して事前に作成しておく。

上記になります。不明点などございましたらコメント頂ければと思います。
よろしくお願いいたします。

A 回答 (1件)

こんにちは



>VBA初心者です。有識者の型アドバイス頂けたら幸いです。
初心者を名乗る割にはそれなりに複雑なことを行おうとしているように思えますので、まずは手順を整理しましょう。
整理したうえで、その手順の部分ごとに結果を確認しながら作成してみて、それぞれが正常に動作する様になったら、連続して処理するようになされば宜しいでしょう。
VBAはその場ですぐに実行テストできますし、デバッグ用のツールも備わっていますので・・

ご提示の手順のままでも実行可能ですが、そのままだと「各手順ごとに、複数のファイルを順に処理する」ことが必要になってしまいそうです。
複数のファイルを同時並行で処理するのは、複雑になるもとでもあり、混乱を招きやすいと思われます。
これを避けるなら、「ファイルを開いて、処理したら、クローズする」ような手順かと思いますが、これを何度も繰り返すのは効率が悪すぎます。

例えば、「ひとつのファイルを作成したら、ご提示の3~5までの処理を行って保存する」ことをファイル数分繰り返す方が、考え方としてはシンプルになるのではと想像します。
また、3と5の処理を考えると、「一旦作成したシートを、後から削除する」ことになりますが、「作成する際に、要/不要を判断して、不要なら作成しない」ようにして、日数分繰り返す方が要領がよさそうに思います。

このようにして、実際の処理手順にほぼ近いものを、ご提示のような箇条書きにして作成したうえで、その部分ごとに動作確認をしながら作成してゆけば良いでしょう。
例えば、ご提示の1の部分であれば、
 「入力をさせて、その内容を表示する」
だけのものを作成してみるということです。
(「内容を表示する」部分は実際には不要ですが、一区切りとして確認するためです)

「そんなの簡単すぎる」と思われるかも知れませんが、実際に作成する際には、
 ・「yyyy/mm」とは異なる値が入力されたらどうするか
 ・キャンセルや「X」のクリックでダイアログをクローズしたらどうするか
などといった、考慮すべき点がいくつか出てくるはずです。
当然、これらの場合についても処理を作成し、動作確認を行う必要があります。

部分を作成する際に不明点があれば、「マクロの記録」などを利用すると、どのような記述をすれば実現できるかのヒントを得ることができると思います。
(できれば、そのままを利用することは避けた方が要領の良いコードに繋がると思います)
それでもわからない部分があれば、検索してみるなり、再度質問してみることで解決策を得られる可能性があります。

このようにして、各パーツができたなら、これを組み合わせて「一つのファイルを作成する」コードにしてみましょう。
これが上手く動作するなら、それをmm個分作成するように順に繰り返せば良いことになりますね。


「そんな、面倒な事やってらんねぇ! 早くコードをよこせ!」
と言うのであれば、質問サイトなどで質問しているよりも、依頼サイトを利用するなり、取引のある業者に依頼するなりなさった方が、手っ取り早くかつ確実に結果を得られると思います。
    • good
    • 1
この回答へのお礼

ご説明ありがとうございます。ひとつひとつ区切って作成してみます。

お礼日時:2023/11/11 17:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A