• ベストアンサー

任意のファイル名の変更

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

  • VBAでファイル名を変更したい

    EXCEL2003のVBAでブックを連続して保存をするものを作成したのですが、スキルが足りないため、ファイル名が数字になってしまい、リネームをしたいのですが、出だしからつまずいております。 リネームをしたいブック(ファイル)は一つのフォルダに入っており、 excelのシートには旧ファイル名と新ファイル名の一覧をつくり VBAを実行すると一覧に載っているブック名が変更される というものを作りたいのですが、可能でしょうか。 一覧は 旧ファイル名  新ファイル名 1.xls      1北海道.xls 2.xls      2青森.xls という感じです。 フリーのリネームソフトではなく何とか自力でやりたいと思っております。 お力をお貸しください。 よろしくお願いいたします。

  • 今開いているエクセルのファイル名をセルに取り込みたい

    日付(yymmdd.txt)の付いた名前のテキストファイルを 自動的にエクセルにCSVで取り込む様に、マクロを組みました。なので、このファイル名に日付が付いているので、この日付をどうにかしてエクセルに取り込みたいのですが、方法をご存知無いですか? TXTとエクセルは同じフォルダに入れて管理する予定なので、エクセルファイルの居るフォルダ内のファイル名を取り込むのでも構いません。 どなたか良い案ありませんか? よろしくおねがいします。

  • EXCELでCSVファイルの読込み

    VBA超初心者でとても困っています。 仕事でEXCELのVBAを使って 現在開いているシートの中に 1つのCSVファイルからデータを読み込むのですが CSVデータの2行目をEXCELのC2へ。 4~10行目までを、EXCELのB5~B14へ マクロを使い、ボタン一つで自動入力させたいのです・・・。 Line Input も、やり方が悪いのかうまくいきません。 ヒントとなるやり方があればぜひ教えてください。

  • VBA csvファイルを開いたまま自動マクロ動作

    一通り検索したのですが、分からなかったので質問させて下さい VBAでcsvファイルを読み込んで動作させる自動マクロ(ファイル)があります 通常ですと、csvファイルを指定のフォルダーに保存してマクロを実行させると思うのですが このcsvファイルを先に開いたままで、自動マクロを実行させることは可能ですか? 具体的には、あるシステムからダウンロードしたcsvファイルを開いたまま 自動マクロファイルを読み込んで実行したいのです 対象:Excel2007/2010/2013 OS:WindowsXP/7 csvファイル名:c20130727123456789.csv(日付+任意の数値9桁) 自動マクロファイル:自動マクロ.xlsm

  • Excelで、開いたファイルを消したい

    Excel2000ですが、 デスクトップ上に保存したcsvファイルを開く ↓ 作業中のブックにシートを増やしそこに先ほど開いたcsvファイルを貼り付けてシート名を変更 ↓ 開いたcsvファイルを閉じる という作業ですが、VBAマクロにするとどういうプログラムになるのでしょうか?教えてください。

  • CSVファイルをEXCELで編集する場合について

    こんにちは。カテゴリ違いかもしれませんが、教えてください。EXCELのマクロやVBAについては全くの初心者なのですが、不特定の名称のCSVファイルをEXCELで表示・編集した場合、マクロ・VBAを自動で起動させて入力規制や入力チェックは行えるものでしょうか?あるセルの内容をチェックする場合、VBAだとシート名を指定しなくてはならない印象を受けましたが、この指定が不特定であることは可能でしょうか?現状ではVBAの扱い方からのスタートになっている段階なので、このような質問になってしまっています。よろしくお願いします。

  • エクセル マクロで特定ファイル名だけを開く

    エクセルのマクロで 特定のファイル名だけをフォルダの中から探して 開くというものを作りたいのですが うまくできません。 フォルダを指定して 「060927.xls」というエクセルファイルだけを 開きたいのですが この日付のところが毎日変わるので 「06XXXX.xls」というような 最初が06であと4つの文字が入ってるファイル名だけを 流動的に指定できるようにするには どのようなVBAマクロにすればよいのでしょうか? とても困っています。 是非教えてください!宜しくお願いします。

  • エクセルVBAでCSVを読み込んで別ファイルにまとめたいです。

    エクセルVBA初心者の者です。 マクロの記録でできたコードをいじって、 なんとか動くものができるレベルです。 Aというフォルダに20~40行程度の内容のCSVファイルが 数百個あります。開けてみないと何行あるのかわかりません。 そのAフォルダのCSVの内容をエクセルで開いて、別のエクセルファイルの一枚のシートにまとめたいのです。 最初にCSVファイル名を一枚のシートのA列に書き出すところ まではやれたのですが、それを順番に読み込んでコピペの 流れができません。 CSVファイル名読み込み 読み込んだファイル1つめCSV開く CSVの20~40行をコピー 別のエクセルファイルのシートに貼り付け 1つめCSV閉じる ↓ 読み込んだファイル2つめCSV開く 繰り返し こういうやり方じゃない方がいいのかもわかりません。 もしかして考え方も違うのでしょうか? サンプルコード教えていただけるとありがたいです。 よろしくお願いします。

  • エクセルで別ファイルのシートの貼り付けマクロ

    マクロ初心者です。よろしくお願いします。 excelファイルのシートに同じシート名csvファイルのデーターの貼り付けをしたいのです。 ↓詳しくは。 excelファイルがあります。(ファイル名:全社) シート名=集計、1、2、3、4、5、6、7、8、9、10(固定) csvファイルがあります。1~始まり数は変動(1~3だったり、1~7とか) 1ファイル=1シート、ファイル名とシート名は同じ excelファイルのシート(1~10)に、開いたcsvファイルの同じシート名(1~10)のデータを貼り付けたい。 毎回コピー・貼り付けの繰り返し作業なので、マクロ作成を試しているのですが、うまくいきません。 教えてください。お願いします。

  • エクセルマクロで任意のファイル名をつけて保存したい

     エクセルVBAについての質問です。  エクセルのマクロで、Aというファイルを開いて、そのうち必要なワークシートだけを抽出し、新しいブックに移動し、その新しいブックを新しいブックのsheet1のセルC2の文字列をファイル名として保存するようなマクロをくみたいと思っています。  ファイルを開いて必要なワークシートだけを抽出し、新しいブックに移動するところまではできましたが、新しいブックのセルC2の文字列をファイル名として保存することができません。FNを変数として宣言して、C2の文字列を代入し、FNをファイル名として保存しようとすると、ファイルにFNという名前が付いてしまいます。どうすれば、C2の文字列をファイル名として保存できるのでしょうか。なお、保存するフォルダはc:\変換ファイル\6月です。どなたか教えてください。よろしくお願いします。

専門家に質問してみよう