Out Of My Memory

雨垂れ石を穿つ

VBA カレントディレクトリのすべてのファイルに処理をする方法

Sub Macro2()

 Dim myPath As String
 Dim myFile As String

 ' マクロを実行したエクセルファイルのパスがmyPathに入る。

 myPath = ThisWorkbook.Path

 ' myFileにmyPathに入っているエクセルファイル名を格納

 ' 複数存在する場合は1つだけ。次にDir関数を引数なしでを呼び出すと、

 ' 他の存在するファイル名を返却する。一度返却したファイル名は返さない。

 ' 返却できるファイル名がなくなったら「""」を返す。
 myFile = Dir(myPath & "\" & "*.xlsx")

 

 ' myFileが「""」になるまで処理を繰り返す。

 Do Until myFile = ""

  ' エクセルファイルを開く(開いたファイルがアクティブになってる)

  Workbooks.Open myPath & "\" & myFile

  ' 1シート目をactive状態にする。

  Worksheets(1).Activate

 

  ~~~ここに処理を書く~~~

 

  ' activeWorkbookを保存して閉じる。

  ActiveWorkbook.Close savechanges:=True

  ' 他の存在するファイル名を返却している。
  myFile = Dir()
 ' 次のループへ
 Loop

 

End Sub

手動マクロ生成が便利で勉強になってびっくりした。 

VBAで自分が作った関数を呼び出す方法をまだ知らないので勉強しよう…