- ベストアンサー
エクセルマクロで指定フォルダをセルから読み取り保存する方法を教えて下さい
エクセルマクロで行き詰まっております。 いい方法があればと思い投稿させていただきました。 ご教授よろしくお願いいたします。 セル内に入力されている日付データから、月だけを読み取り、該当月フォルダへ格納するようなマクロはありますでしょうか? 例) セルA1 2007/11/1 格納フォルダはCドライブの業務フォルダ内に4月・5月~3月という名前のフォルダを準備しております。 マクロ初心者で大変申し訳ありませんが、どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>該当月フォルダへ格納するようなマクロ 別に難しいものではありませんが、 フォルダ名の数字(月)は全角?半角? 「ファイル名」はどのようにするのでしょうか? 開いているファイルの名前をそのまま使うのですか? それとも任意の名前を付けるとか決まりはあるのですか? 同名のファイルがあった場合はどうするのですか? 開いているファイルはどこかに保存するのですか? それとも破棄?(保存しない)
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
こんな感じでしょうか? format関数で任意のフォーマットが得られます。 ファイル名には"/"等の記号が使えないので日付にする場合は注意して下さい。 保存フォルダが無い場合は自動的に作成します。 Sub sample() Dim fol As String Dim Fname As String Sheets("Sheet1").Activate fol = "c:\業務フォルダ\" & Format(Range("A1"), "m月") Fname = Format(Range("A1"), "yyyymmdd") & Range("B1") If Dir(fol, vbDirectory) = "" Then MsgBox "保存フォルダを作成します。" MkDir fol End If Fname = fol & "\" & Fname & ".xls" ThisWorkbook.SaveAs Fname End Sub
お礼
hana-hana3様 ご多忙中にもかかわらずご丁寧に回答感謝いたしております。 早速試してみたところ、問題なく実行できました。 頭の中のモヤモヤがすっきりし、今日は熟睡できそうです。 これを機にマクロをもう少し勉強していきたいと思います。 本当にありがとうございました。
お礼
hana-hana3様 良いご指導をいただいたおかげでマクロの9割が完了いたしました。 ありがとうございました。 それで、再度確認させていただきたい事項がございましたので、お礼にあわせてここで質問させていただいてよろしいでしょうか? 上記マクロ実行文の中でファイル名をつけて保存する箇所がございますが、 Fname = fol & "\" & Fname & ".xls" ThisWorkbook.SaveAs Fname End Sub ここの部分なのですが、一つ問題がありましてコピー元のファイル名がここで作られたファイル名に変換されてしまい、コピー先のフォルダは(Book1)のまま、残っております・・ この場合、(Book1)のファイル名を変更して保存するにはどうしたらよろしいでしょうか? ご教授よろしくお願いいたします。 それともう一点伺ってよろしいでしょうか? InputBoxで入力を促している際、画面のスクロール機能が無効になっていますが、これを有効にする命令文はありますでしょうか? 色々とご面倒をおかけし申し訳ありませんが、アドバイスのほどよろしくお願いいたします。
補足
hana-hana3様 早速のご回答ありがとうございます!! 言いたいことがうまくまとめられず申し訳ございません。 フォルダ名の月の数字は半角数字としております。 ファイル名は、元のエクセルファイルにマクロを組ませており、抽出したものをコピーし、そのデータを新規のワークシートに貼り付け、新規のワークブックに名前を付けるように考えております。 実はそのファイル名の取得も今奮闘中でうまくできておりません。(苦笑) よろしければそこも加えてご回答いただけますと大変助かります。 ファイル名の取得方法としては、セルA1(半角数字)とセルB1(文字列)に入力されたデータ・文字を結合させ、ファイル名として保存することにしております。 もう少し勉強しないといけないとは思っているのですが、運用をせまられており、こうして質問をさせていただいている次第です。 同名ファイルは今のところ存在させないように考えております。 どうぞよろしくお願いいたします。