• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBAで翌月のファイル名取得)

ExcelVBAで翌月のファイル名取得

このQ&Aのポイント
  • ExcelVBAを使って翌月のファイル名を取得する方法について説明します。
  • 具体的な例として、あるファイル名から1ヶ月後のファイル名を作成するコードを紹介します。
  • また、特定のファイル名を指定して次の月のファイル名を作成する方法についても解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

「月.xlsm」と同じく、削除したいのをただ削除するだけです。 dim myFile as string myfile = thisworkbook.name myfile = "削除したい" & format(dateadd("m", 1, replace(replace(myfile, "削除したい",""), "月.xlsm", "")), "yyyy-m") & "月.xlsm" thisworkbook.saveas myfile #pathとか変数名に使っちゃダメです。

hinoki24
質問者

お礼

どうもありがとうございました。補足の部分はまた新たに投稿いたします。

hinoki24
質問者

補足

どうもありがとうございます。大変感謝です。replace(replaceに変えるのはきちんと理解がないとでてこないですね。 教えていただいたもので、思い通りになりましたが、もう1点問題がでました。年が変わったら「2015年」という名前でフォルダの作成を行いたいのですが、下記のコードでは「削除したい2015年」という名前のフォルダになってしまいます。フォルダの作成は、「削除したい」を除いたものを作成するにはどう変えればよいでしょうか? 理解がまだまだ薄いので、たびたびお手数をおかけしますがどうぞよろしくお願いいたします。 Sub ブックコピー自動翌月分作成() Dim i As Integer Dim wb As Workbook Dim myDir_path As String, myNew_path As String 'フォルダパスとファイルパスを作成 myDir_path = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\") - 1) myNew_path = "削除したい" & Format(DateAdd("m", 1, Replace(Replace(ThisWorkbook.Name, "削除したい", ""), "月.xlsm", "")), "yyyy-m") & "月.xlsm" myDir_path = Left(myDir_path, InStrRev(myDir_path, "\")) & Left(myNew_path, 9) & "年\" 'フォルダの有無を確認、なければ作成 With CreateObject("Scripting.FileSystemObject") If Not .FolderExists(myDir_path) Then MkDir myDir_path 'MsgBox myDir_path & "を作成しました" 'MsgBox Left(myDir_path, InStrRev(myDir_path, "\")) & "に" & vbNewLine & MsgBox Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\") - 12) & "に" & vbNewLine & _ Left(myNew_path, 9) & "年" & "フォルダを新たに作成しました" End If End With 'ファイルの有無を確認、なければ保存,あれば処理中止 If Dir(myDir_path & myNew_path) = "" Then ThisWorkbook.SaveCopyAs myDir_path & myNew_path MsgBox myNew_path & "のファイルを新たに作成しました" Else MsgBox "翌月分のファイルはすでに存在するので処理を中止します", vbOKOnly, "処理中止" Exit Sub End If '新規作成したブックを開く,既に開いていれば処理中止 For Each wb In Workbooks If wb.Name = myNew_path Then MsgBox myNew_path & "は既に開いているので処理を中止します", vbOKOnly, "処理中止" Exit Sub End If Next Workbooks.Open myDir_path & myNew_path Workbooks(myNew_path).Activate End Sub

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

現在のコードで不都合なことがよくわかりません。 >もしファイル名を変えて、「削除したい2015-2月.xlsm」という名前にした時、、「削除したい2015-3月.xlsm」という名前をpathに入れるようにするにはどこを変えればできるでしょうか? 「削除したい2015-2月.xlsm」という名前にした時とはどのような操作を意味しているのでしょうか? 具体的に、このようなことをしたいが、現在のコードではこのような結果になっていまうというような(たとえは2015-1月.xlsmファイルのファイル名を2015-2月と変更したところ2015-3月のファイル名が作成できないなど)補足説明をされたほうが良いと思います。

関連するQ&A