• 締切済み

Excel2007 VBAについて

Excel2007 VBAについて質問です。 現在マクロでExcelデータを毎朝8時に保存フォルダに自動保存しているのですが、今回保存フォルダの中に年別フォルダ、月別フォルダを作成しその中に保存していきたいと思っています。 例 2013年フォルダの中に1月~12月のフォルダ 2013年2月25日の保存データは2013年フォルダ内の2月フォルダ内に保存。 ちなみに年度別フォルダは、2030年ぐらい迄作る予定です。 以下現在のマクロです。 Sub 自動保存() Dim 年 As String Dim 月 As String Dim 日 As String 年 = Year(Now()) 月 = Month(Now()) 日 = Day (Now()) With Workbooks (″サンプル.xlsm″) WorkSheets(″Sheet3″).Range(″B6:B205″).Value = Worksheets(″メインモニタ″).Range(″F13:F212″).Value End With Worksheets(″Sheet3″).Select Worksheets(″Sheet3″).Copy Application.DisplayAlerts = False Const mypath As String = ″C:¥保存データ¥″ With ActiveWorkbook.SaveAs″C:¥保存データ¥″_&年&″年″&月&″月″&日&″日″&″.xlsx″.Close End With Application.DisplayAlerts = True Application.Ontime DeteValue(Dete +1)+TimeValue(″8:00:00″),″自動保存″ Worksheets(″メインモニタ″).Activate End Sub すいませんがご指導願います。

みんなの回答

noname#203218
noname#203218
回答No.1

ファイルを保存する前に、フォルダ「保存データ」に年フォルダ、月フォルダがあるか検索し、無ければフォルダを新設する。 年、月、日はNOW関数を用いる事を条件とする。で宜しいでしょうか。 尚、変数に漢字を使用されていますが、変数とテキストデータが重複すると見づらいので、変数をアルファベットとしました。 Sub 自動保存() Dim SaveFol, Fname As String Dim nen, tuki, nichi As String nen = Year(Now()) tuki = Month(Now()) nichi = Day(Now()) With Workbooks (″サンプル.xlsm″) WorkSheets(″Sheet3″).Range(″B6:B205″).Value = Worksheets(″メインモニタ″).Range(″F13:F212″).Value End With Worksheets(″Sheet3″).Select Application.DisplayAlerts = False '----------------------- 'ここから追加 '年フォルダ確認、無ければ年フォルダ作成 SaveFol = "C:\保存データ\" & nen & "年" If Dir(SaveFol, vbDirectory) = "" Then MkDir SaveFol End If '月フォルダ確認、無ければ月フォルダ作成 SaveFol = "C:\保存データ\" & nen & "年\" & tuki & "月" If Dir(SaveFol, vbDirectory) = "" Then MkDir SaveFol End If Fname = "\_" & nen & "年" & tuki & "月" & nichi & "日.xlsx" ActiveWorkbook.SaveAs SaveFol & Fname ActiveWorkbook.Close '----------------------- 'ここまで Application.DisplayAlerts = True Application.Ontime DeteValue(Dete +1)+TimeValue(″8:00:00″),″自動保存″ Worksheets(″メインモニタ″).Activate End Sub 不要と思われる箇所は削除しましたので、必要でしたら再度追加下さい。 ペースト先が記載していないのでコピー削除。Worksheets(″Sheet3″).Selectも不要な気がしますが。 Worksheets(″Sheet3″).Copy パスを使用していないので削除しています。 Const mypath As String = ″C:¥保存データ¥″ 日付保存ファイル名の先頭に全角の_を入れてますが、それで良いのでしょうか?問題なければ良いのですが。 ファイル名、フォルダ名の作り方が希望通りであるかは分かりませんので、ダミーのフォルダでも作成して確認下さい。