私はVBAとプログラミング全般に不慣れです。これは、このボードへの私の最初の投稿です。私はインターネットで見つけたコードを変更するためにしばらくこれに取り組んできました、そして私は私が望むことをするためのコードを持っています、しかし私はプロセスをスピードアップするためにそれを少し変更したいと思います。
私が持っているコードは、デスクトップの「Receiving Temp」のフォルダーに保存したExcelファイルからデータを取得し、そのデータをワークブック「ReceivingDataExtractor」に配置します。関連付けられているPO(さまざまな名前)にちなんで名付けられたサブディレクトリに保存されている月に約1000個のファイルからデータを取得しています。今のところ、マクロが機能する前に、これらの各サブディレクトリを調べて、Excelファイルを「ReceivingTemp」に移動する必要があります。各サブディレクトリを開いて取得するのではなく、フォルダ内のサブディレクトリに含まれるすべてのExcelファイルで同じことを行うようにコードを変更して、サブフォルダを「受信一時」フォルダにコピーしてマクロを実行できるようにします。 Excelファイルとそれを手動で移動します。この場合も、サブディレクトリの名前はさまざまです。
私はあなたが提供できるどんな助けにも感謝します。
Sub ReadDataFromAllWorkbooksInFolder()
Dim FolderName As String, wbName As String, r As Long
Dim cValue As Variant, bValue As Variant, aValue As Variant
Dim dValue As Variant, eValue As Variant, fValue As Variant
Dim wbList() As String, wbCount As Integer, i As Integer
FolderName = ThisWorkbook.Path & "\Receiving Temp\"
' create list of workbooks in foldername
wbCount = 0
wbName = Dir(FolderName & "\" & "*.xls")
While wbName <> ""
wbCount = wbCount + 1
ReDim Preserve wbList(1 To wbCount)
wbList(wbCount) = wbName
wbName = Dir
Wend
If wbCount = 0 Then Exit Sub
' get values from each workbook
r = 1
For i = 1 To wbCount
r = r + 1
cValue = GetInfoFromClosedFile(FolderName, wbList(i), "Quality Rep.", "c9")
bValue = GetInfoFromClosedFile(FolderName, wbList(i), "Quality Rep.", "o61")
aValue = GetInfoFromClosedFile(FolderName, wbList(i), "Quality Rep.", "ae11")
dValue = GetInfoFromClosedFile(FolderName, wbList(i), "Quality Rep.", "v9")
eValue = GetInfoFromClosedFile(FolderName, wbList(i), "Quality Rep.", "af3")
fValue = GetInfoFromClosedFile(FolderName, wbList(i), "Non Compliance", "a1")
Sheets("Sheet1").Cells(r, 1).Value = cValue
Sheets("Sheet1").Cells(r, 2).Value = bValue
Sheets("Sheet1").Cells(r, 3).Value = aValue
Sheets("Sheet1").Cells(r, 4).Value = dValue
Sheets("Sheet1").Cells(r, 6).Value = eValue
Sheets("Sheet1").Cells(r, 5).Value = fValue
Next i
End Sub
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
wbName As String, wsName As String, cellRef As String) As Variant
Dim arg As String
GetInfoFromClosedFile = ""
If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\"
If Dir(wbPath & "\" & wbName) = "" Then Exit Function
arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function