人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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


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

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

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


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

●質問者: naranara19
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ardarim
●250ポイント ベストアンサー

サンプルコードです。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

naranara19さんのコメント
ありがとうございます。しっかりとできていそうにみえるのですが、実行しても、なぜかうんともすんともいいません。デスクトップのものが上書きされないのです。(特定フォルダには該当のCSVは一つしかありません。) 原因は何か考えられますでしょうか?

ardarimさんのコメント
自分の環境では、動作を確認できています(SourcePathは環境に合わせて変えています)。 原因としては、SourcePathが間違っているか、アクセス権限がないとか、といったことくらいしか考えられません。 切り分けとしては、「Do While fileName <> ""」の次の行に「Debug.Print fileName」をいう行を挿入してみてください。実行すると、イミディエイトペイン(VBA画面の下のウィンドウ)に見つかったCSVの名前を出力します。まずはここで正しくCSVが検索できているか確認してみてください。 それでCSVが見つからないようであれば、SourcePathが間違っている可能性があります。 SourcePathの中身をコピーしてエクスプローラのアドレス欄に貼り付けて、フォルダ名があっているか(CSVがそこにあるか)確認してみてください。

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

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
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ