• ベストアンサー

任意のファイル名の変更

ファイル名がD303????.csv。????に日付がはります。たとえばD3031214(正確には時間まで含めたファイル名)みたいに、自動でファイルがシステム上毎日作成されます。そのうち、一番新しいファイルをリネーム、単純にD303.CSVにしてエクセルで利用したい。手順的にはエクセルをたちあげて、マクロ(VBA)を起動し、たくさんあるD303????.csvのうち一番新しいものをD303.CSVにリネームしてエクセルのシートに貼り付ける。ファイル名の変更にワールド文字がつかえないので困っています。何かいい方法はありませんか。できれば、例文もおしえていただけえばありがたいのですが。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

VB/excel-VBAでやって見ました。 エクセルのVBEの標準モジュールに貼り付けて テストしてみてください。必ずフォルダ゛等のコピーを取ってそちらでやってください。一応私のMyDocumentsフォルダ内でテストしていますが、年月時刻の最後のものが、1日分の中に限って考えて、比較して最大値になるか未確認なのでよろしく。勿論最初のDIR()の()内のフォルダ名はご質問者のケースに変えてください。 GetAttr(b)は今回使っていませんが、テスト過程で使ったもので、残してあります。CSVファイルをエクセルに 読み込ます部分は省略しました。 Sub test01() a = Dir("c:\My Documents\") mb = "" For i = 1 To 1000 b = Dir() If b = "" Then Exit For atr = GetAttr(b) ' MsgBox b & atr ' 拡張子CSVか If Right(b, 3) <> "csv" Then GoTo e01 p = InStr(1, b, ".") ' 拡張子除きファイル名 bb = Mid(b, 1, p - 1) ' MsgBox bb If bb > mb Then mb = bb mb1 = b End If e01: Next i f = "c:\My Documents\" & mb1 MsgBox f Name f As "D303.csv" ' ファイル名変更 End Sub

yancyan
質問者

お礼

皆さん、本当に早速の回答ありがとうございました。imogasiさんの回答が素人の僕に一番あってました。実際コピーして使ったらうまくいきました。VBAの中身を見ると本当に簡単ですね。でも、コロンブスの卵と同じで、白紙の状態からこれを作るのはたいへんなのでしょうか。いろんな本を見て探したりしましたが、いっぺんに悩みが解決しました。本当にありがとうございます。

その他の回答 (3)

  • ribisi
  • ベストアンサー率28% (247/864)
回答No.3

こんな流れで考えました。 1)FileSystemObjectを使って候補ファイル一覧を取得。 2)文字列操作関数でファイル名から日付部分を切り出し、 日付型にキャストする。 もしくは、#1の方が言われているように、ファイルの タイムスタンプを取得する。 3)2)で得た日付をソートする。 4)最新の日付に相当するファイル名を取得。 5)FileSystemObjectを使って、該当ファイルのファイル名を D303.csvに変更。 6)D303.csvをエクセルで開く。 任意のファイル名の変更や、フォルダ操作は、VBScriptの FileSystemObjectを使うと便利です。 エクセルのVBAから使うときは、参照設定で Microsoft Scripting Runtimeオブジェクトへの参照を 追加してください。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.2

ファイル名の一覧の取得は、参考URLをどうぞ。

参考URL:
http://www.ae.wakwak.com/cgi-bin/sbox/~efc21/wwwlng.cgi?print+200210/02100067.txt
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

まず、ファイルの一覧を取得し、それから一番、最新の日付のものをリネームすればいいのではないのでしょうか? これは、VBAで作成するのですか?

yancyan
質問者

補足

早速の回答ありがとございます。個人的には考え方もわかりますし、実際にマクロを使わず、エキスプローラの手動でやっています。新人さんにはちょっと怖いので、VBAで作成し、ボタンひとつでリネームできないものかとお思いまして。ファイルの一覧を取得し、それから一番、最新の日付のものをリネームするにはVBAではどのよにすればよいのか教えてください。

関連するQ&A