アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/14 20:43

こんな流れで考えました。



1)FileSystemObjectを使って候補ファイル一覧を取得。
2)文字列操作関数でファイル名から日付部分を切り出し、
日付型にキャストする。
もしくは、#1の方が言われているように、ファイルの
タイムスタンプを取得する。
3)2)で得た日付をソートする。
4)最新の日付に相当するファイル名を取得。
5)FileSystemObjectを使って、該当ファイルのファイル名を
D303.csvに変更。
6)D303.csvをエクセルで開く。

任意のファイル名の変更や、フォルダ操作は、VBScriptの
FileSystemObjectを使うと便利です。
エクセルのVBAから使うときは、参照設定で
Microsoft Scripting Runtimeオブジェクトへの参照を
追加してください。
    • good
    • 0

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



参考URL:http://www.ae.wakwak.com/cgi-bin/sbox/~efc21/www …
    • good
    • 0

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



これは、VBAで作成するのですか?

この回答への補足

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

補足日時:2002/12/14 16:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!