見出し画像

9-全てのファイル名を書きだす(エクセルマクロ)

指定したフォルダに入っている全てのファイル名をエクセルシートに書き出す

皆さんこんにちは。
今回は一つのフォルダに入れてある全てのファイルをシートに書き出すマクロをつくります。
◆イメージ

画像1

◆書くコード

画像4

★一見、ごちゃごちゃしていますが順番に見ていけば大丈夫です。

★「Option Explicit」の表示がある場合は削除してくださいね。
(変数宣言を強制するものなので必要ありません。)

①mypath = "C:\~~~~~~\Desktop\取引先ファイル"
cnt = 1
②myFIle = Dir(mypath & "¥*")
③Do While myFile <> ""
④  Range("A" & cnt).Value =
myFile
⑤  cnt = cnt + 1 
⑦  
myFile = Dir()
③Loop

◆解説
mypathという変数に、書き出したいファイルが入っているフォルダのパスをいれます
(文字列なのでダブルクォーテーションで囲みます)
myFileという変数に、書き出したいファイルのパスを引数にしたDir関数をいれます
  (Dir関数:3-独自のエラーメッセージを表示させる
  (関連記事:【マクロ実践編1】
★フォルダパスとファイル名の区切りには「¥」が必要ですね。そして書き出したいファイルは全てなので「(アスタリスク)」を付ければOKです

画像5



Do While ~ Loop
繰り返し処理の書き方です。
Do(する)While(~の間)「<> "" 」(空ではない)Loop(繰返す)という意味で、
myFIleが空ではない間繰返してする ➡ myFIleがなくなるまで繰返す
myFIleがなくなるまで④→⑤→⑥を繰返す

<繰り返す内容>
④Range("A" & cnt).Value = myFile
A列セルにファイル名を入力します。
(★myFIleにはDir関数によってファイル名が入っていますね。)
セル「A1」からA2、A3、A4、、、と書き出してほしいので行番号は1から+1ずつ増やしていきます。なので、変数として「cnt」としておき、次繰り返された時のために⑤cnt = cnt + 1 と行番号を1増やしておきます。cntは、これまでと同じように勝手に作った変数ですので、数字ということがわかるように、繰り返し処理の前に初期値として最初の行である1を入れておきます。→コード2行目の⑥cnt = 1(これを書かずにいきなり⑤のコードを書かれてもマクロ側では何を入れればいいのかわかりません。)

⑦myFile = Dir()
Dir()は次のファイルを検索します。ですので、この時点でmyFileにはフォルダ内の次のファイル名が入ります。

★すべて書き出したときDir()=""となりDo While myFile ""となるので繰り返し処理は終了します。



画像3

エクセルファイルだけ書き出したいとき

書き出すファイルの指示②myFIle = Dir(mypath & "¥*")で、今回は全てのファイルを書出しましたが、拡張子が[.xlsx]のファイルだけ書き出したいときは (mypath & "¥*")➡(mypath & "¥*.xlsx")のように書きます。
myFIle = Dir(mypath & "¥*.xlsx")


★まずはコードを全部まねして書いて実行してみましょう。
書き換える箇所は①の部分だけです。
①mypath = ”書き出したいファイルが入っているフォルダのパス”


動画でもご覧いただけます。


ではまた次回です。




この記事が気に入ったらサポートをしてみませんか?