いつもお世話になります。
VBAについて質問です。
デスクトップにあるフォルダ内に300個程のエクセルファイルがあります。
エクセルファイルの中身ですが、表がありフォーマットは全て同じで中身の数字が異なるだけです。
下記コードで1つづつファイルを開き値を取得するやり方で処理をしていますがとても処理時間がかかります。
大量のファイルから値を取得したい場合、もっと処理が早くなる方法はありますか?
コードを教えて欲しいのではなく、アドバイスをお聞きしたいです。
Sub A()
Dim ExcelApp As New Application
Dim targetSheet As Worksheet
Dim folderPath As String
Dim rowIndex As Long
Dim fileName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim cellValue As Variant
Set targetSheet = ThisWorkbook.Sheets(3)
folderPath = Environ("USERPROFILE") & "\Desktop\フォルダ\"
With targetSheet
.Range("D2:D" & .Cells(.Rows.Count, "A").End(xlUp).Row).ClearContents
End With
rowIndex = 2
ExcelApp.Visible = False
ExcelApp.DisplayAlerts = False
While Not IsEmpty(targetSheet.Cells(rowIndex, 1))
fileName = targetSheet.Cells(rowIndex, 1).Value
If dir(folderPath & fileName) <> "" Then
Set wb = ExcelApp.Workbooks.Open(folderPath & fileName, , True)
Set ws = wb.Sheets(1)
cellValue = ws.Range("F84").Value
If IsNumeric(cellValue) Then
With targetSheet.Cells(rowIndex, 4)
.NumberFormat = "#,###"
.Value = cellValue
End With
End If
wb.Close SaveChanges:=False
End If
rowIndex = rowIndex + 1
Wend
ExcelApp.DisplayAlerts = True
ExcelApp.Quit
Set ExcelApp = Nothing
End Sub