エクセルのマクロで、csvをワイルドカードを使って検索し、移動したい。



特定のフォルダ内(C:\Users\naranara19\Downloads)に、
20171028224126_発行済データ.csv

というようなファイルがあります。しかし、このCSVファイルの数字が桁数はかわりませんが、毎回変わります。これをエクセルのマクロでデスクトップに名前を変えて移動したいのですが、

どうすればよいでしょうか?デスクトップには、出力用.csvとして貼り付けたいです。
(なお、デスクトップにはすでに出力用.csvがあり、それを上書きする形です)


どうかよろしくお願いいたします。
(恐れ入りますが、マクロを書いてくださった方のみポイント対象でございます)

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2017/10/31 07:38:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ardarim No.1

回答回数897ベストアンサー獲得回数145

ポイント250pt

サンプルコードです。CopyCsvFileで呼び出します。
元フォルダに該当のファイルが複数ある場合は、どのファイルがコピーされるかは不定になります。
例えば、ファイル名の中に入っている数字の部分(日付?)が最新のものをコピーする等も可能ですが、もう少し複雑になります。

Const SourcePath As String = "C:\Users\naranara19\Downloads"

Sub CopyCsvFile()
    Dim fileName As String

    fileName = Dir(SourcePath & "\*.csv")
    Do While fileName <> ""
        If fileName Like "??????????????_発行済データ.csv" Then
            FileCopy Source:=SourcePath & "\" & fileName, Destination:=GetDesktopPath() & "\出力用.csv"
            Exit Do
        End If
        fileName = Dir()
    Loop

End Sub

Function GetDesktopPath() As String
    Dim wsh As Object
    
    Set wsh = CreateObject("WScript.Shell")
    GetDesktopPath = wsh.SpecialFolders("Desktop")
    Set wsh = Nothing
    
End Function
他2件のコメントを見る
id:naranara19

ありがとうございました。正しくCSVが検索されておりまして、なぜか今回はしっかりできました。実行すると、しっかりとできました。ありがとうございました。

前回は上の緑色のボタンから実行していたのですが、今回はそれを押すとマクロの選択画面がでてそれをクリックするとできました。他のマクロが干渉していたんでしょうか。素人ですみません。
ご丁寧な対応に深く感謝しております。ありがとうございました。

2017/10/31 07:37:34
id:ardarim

うまくいったようでよかったです。

緑色のボタンは、右向きの三角形のボタンだと思いますが、マクロの実行ボタンです。
ボタンを押すとカーソル位置にあるマクロを実行しますので、前回はたまたま他のマクロの上にカーソルがあったのでしょう。
なお、カーソルが実行可能なマクロ上にない場合(End Subの後やFunction~End Functionの間など)は、マクロの選択画面が表示されます。

通常はVBA画面は出す必要はありませんので、Excel画面上から[表示]→[マクロ]→[マクロの表示]でマクロの選択画面を出すのが良いと思います。
シート上にボタンを置いてボタンにマクロを割り当てることもできますのでご参考までに。
https://support.office.com/ja-jp/article/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB-%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AB%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B-d58edd7d-cb04-4964-bead-9c72c843a283

2017/11/01 00:40:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません