例:フォルダ内のエクセルファイルを開き、セルA1にファイル名を入力し保存して閉じる。
目次
Do~Loop・フォルダ内にある全てのファイルに対し処理を繰り返す
ファイルがフォルダ内にある限り処理を繰り返す方法です。
Do While文
Do While (フォルダ内にファイルがある限り)
(繰り返す処理)
Loop
サンプルコードです。
Sub sample1() Const fPath As String = "F:\sample\" Dim fName As String fName = Dir(fPath & "*.*") Do While fName <> "" Workbooks.Open (fPath & fName) With Workbooks(fName) Range("A1").Value = fName .Close SaveChanges:=True End With fName = Dir() Loop End Sub
- 6・13行目:Do While(条件式)~Loopで条件がTrueの間は処理を繰り返します。
- 8~11行目:繰り返す処理/セルA1にファイル名を入力し、保存して閉じます。
For~Next・シートに書き出したファイル名に対し処理を繰り返す
処理対象のファイル名をシートに書き出す方法です。処理対象のデータを選べるので、大量のデータがある場合はこちらの方法の方が良い場合があります。
For Next文
Dim i as long
For i = (開始) to (終了)
(繰り返す処理)
Next i
処理したいファイル名をすべてシートに書き出す方法
処理したいファイル名をセルA2以降に書き出します。
サンプルコードです。
Sub sample2() Const fPath As String = "F:\sample\" Dim fName As String Dim i As Long For i = 2 To 4 fName = Cells(i, 1) If Dir(fName) <> "" Then Workbooks.Open Filename:=fPath & fName With ActiveWorkbook .ActiveSheet.Range("A1").Value = fName .Close SaveChanges:=True End With End If Next i End Sub
- 7行目:シートのセルA2以降のファイル名
- 8・14行目:「If Dir(fName) <> "" Then...End If」フォルダ内に対象のファイルがある場合に実行します。
- 9行目:対象ファイルを開きます。
- 10~13行目:繰り返す処理/セルA1にファイル名を入力し、保存して閉じます。
処理したいファイル名を選択する方法
(1)フォルダ内にあるファイル名をすべて書き出します。
(2)処理したいファイル名を選択します。B列に「1」と入力したファイルに対し処理します。
処理後はC列に「済」と表示します。
サンプルコードです。
Sub sample3() Const fPath As String = "F:\sample\" Dim fName As String Dim i As Long For i = 2 To 4 If Cells(i, 2).Value = 1 Then fName = Cells(i, 1) If Dir(fName) <> "" Then Workbooks.Open Filename:=fPath & fName With ActiveWorkbook .ActiveSheet.Range("A1").Value = fName .Close SaveChanges:=True End With Cells(i, 3).Value = "済" End If End If Next i End Sub
- 7・17行目:「If Cells(i, 2).Value = 1 Then...End If」対象ファイルのB列に「1」と入力がある場合に処理を実行します。
- 11~14行目:繰り返す処理/セルA1にファイル名を入力し、保存して閉じます。
- 15行目:処理したファイルの場合、シートのC列に「済」と表示します。