- ベストアンサー
VBAで最新ファイルをコピーして名前変更する方法
- VBAを使用して指定フォルダ内の最新のファイルを取得し、コピーして名前を変更する方法について説明します。
- 指定フォルダ内の全てのファイル名と更新日時を取得し、Excelのシートに記述します。その中から最新のファイルをコピーし、コピーしたファイルの名称を変更します。
- ファイル名に含まれる数値部分のみを編集することも可能です。難易度は高いですが、VBAを使用すれば実現できます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>できれば、ファイル名の法則?に従って数値のみ編集したいと思っています。 私の知識内では代替案になってしまいますが・・・(もっと詳しい方なら出来るのかもしれません) Inputbox内の初期値として最新のファイル名が代入されます。 数値部分のみを編集してOKを押せば近いような処理にはなるかと思いますが如何でしょうか。。。 例としてファイル名はA1~、更新日時(日時というか更新日でしょうか?)はB1~に出力させます。 ※時間まで出したい場合はFormatを外せば出来ると思います。例えば更新日が同一のファイルが複数あったりする場合、こちらの方が確実に最新のファイルを特定できるので推奨しますが・・・ Sub test() Dim strfolder As String Dim strnewfilename As String Dim buf As String Dim i As Long Dim copybook As Workbook ActiveSheet.Cells.ClearContents strfolder = ThisWorkbook.Path & "\" buf = Dir(strfolder) i = 1 Do Until buf = "" If buf <> ThisWorkbook.Name Then Range("A" & i) = strfolder & buf Range("B" & i) = "更新日時:" & Format(FileDateTime(strfolder & buf), "yyyy/mm/dd") i = i + 1 End If buf = Dir() Loop Range("A1").CurrentRegion.Sort key1:=Range("B1"), key2:=Range("A1") Set copybook = Workbooks.Open(Range("A1").End(xlDown).Value) strnewfilename = InputBox("保存するファイル名を入力", Default:=copybook.Name) With copybook .SaveAs strfolder & strnewfilename .Close(False) End With End Sub
お礼
回答ありがとうございます! お蔭様で上手く作ることが出来ました。