![見出し画像](https://assets.st-note.com/production/uploads/images/35415727/rectangle_large_type_2_258ed4d4641d8c72e9a5922fdd214646.png?width=1200)
9-全てのファイル名を書きだす(エクセルマクロ)
指定したフォルダに入っている全てのファイル名をエクセルシートに書き出す
皆さんこんにちは。
今回は一つのフォルダに入れてある全てのファイルをシートに書き出すマクロをつくります。
◆イメージ
◆書くコード
★一見、ごちゃごちゃしていますが順番に見ていけば大丈夫です。
★「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です
③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 = ""となるので繰り返し処理は終了します。
エクセルファイルだけ書き出したいとき
書き出すファイルの指示②myFIle = Dir(mypath & "¥*")で、今回は全てのファイルを書出しましたが、拡張子が[.xlsx]のファイルだけ書き出したいときは (mypath & "¥*")➡(mypath & "¥*.xlsx")のように書きます。
myFIle = Dir(mypath & "¥*.xlsx")
★まずはコードを全部まねして書いて実行してみましょう。
書き換える箇所は①の部分だけです。
①mypath = ”書き出したいファイルが入っているフォルダのパス”
動画でもご覧いただけます。
ではまた次回です。
この記事が気に入ったらサポートをしてみませんか?