質問: excelvbaでブックをコピー名前翌月に変更 excel2013で開いているブックを丸ごとコピーして、コピーしたブックの名前の月を翌月に進めたいのですが、どうすればよいでしょうか? 現在は、とりあえず以下のような感じで一応コピーはできますが、名前は固定です。 「2014-11月.xlsm」のブックコピーのvbaを実行すると、「2014-12月.xlsm」のブックが作成され、、「2014-12月.xlsm」のブックのvba実行で、、「2015-1月.xlsm」のブックができるようにしていきたいです。 どうすれば実現できるでしょうか? sub ブックコピー() thisworkbook.savecopyas "d:\***\desktop\サンプル\2014-12月.xlsm" end sub
回答: >追加で、もし年が変わったら、例えば来年なら「2015年」のフォルダを> >自動で作成してそちらに保存するようにできますか? >フォルダの作成場所は現在の一つ上の階層に作りたいです。 >現ファイルは2014年のフォルダ内に存在しています。 現在のフォルダ「2014年」と同階層に「2015年」、「2016年」・・・を作成するようにしました。 >また、すでにファイルが存在している場合は、 >警告を出して複製しないようにしたいです。 既に存在する場合は上書きの確認ではなく、処理を中止するようにしています。 ■vbaコード sub ブックコピー() dim mydir_path as string, mynew_path as string 'フォルダパスとファイルパスを作成 mydir_path = left(thisworkbook.fullname, instrrev(thisworkbook.fullname, "\") - 1) mynew_path = format(dateadd("m", 1, datevalue(replace(thisworkbook.name, "月.xlsm", "-1"))), "yyyy-m") & "月.xlsm" mydir_path = left(mydir_path, instrrev(mydir_path, "\")) & left(mynew_path, 4) & "年\" 'フォルダの有無を確認、なければ作成 with createobject("scripting.filesystemobject") if not .folderexists(mydir_path) then mkdir mydir_path end if end with 'ファイルの有無を確認、なければ保存 if dir(mydir_path & mynew_path) = "" then thisworkbook.savecopyas mydir_path & mynew_path else msgbox "重複するファイルが存在します。", vbokonly, "保存失敗" end if end sub