我正在尝试访问特定文件夹中的多个不同工作簿,并从每个工作簿上的预先确定的单元格中提取数据。所有工作簿都是测试日志,因此它们的格式相同,我使用的单元 ID 也相同。
我知道您可以使用公式
='[File_Name]Sheet1'!R1C1
从该特定文件的单元格 A1 中提取日期。我找到了一个基本脚本,可以检索特定文件夹中所有文件的名称。
Dim FSO As Object
Dim Folder As Object
Dim File As Object
Dim i As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Users\Callum\Documents\Test Logs")
For Each File In Folder.Files
Sheets("Data").Select
Cells(i + 1, 1) = File.Name
i = i + 1
Next File
End Sub
计划是将两者结合起来,以便脚本检索文件名,将其保存为变量,然后使用文件名变量打印方程。理论上,这应该打印源工作簿上请求的单元格中的值,找到文件夹中的下一个文件,将其设置为文件名变量,然后重复打印过程,列出每个工作簿中单元格 A1 中的所有值文件夹。
Dim FSO As Object
Dim Folder As Object
Dim File As Object
Dim Name As String
Dim i As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Users\Callum\Documents\Test Logs")
For Each File In Folder.Files
Name = File.Name
Sheets("Data").Select
Cells(i + 1, 1) = "='[Name]Sheet1'!R4C2"
i = i + 1
Next File
End Sub
相反,在打印公式时似乎没有注册保存文件名的变量,因此每次运行脚本时,它都会要求您手动选择要使用的文件。
问题:
Name
不同的变量名称,因为它会隐藏 Name
语句。但这里甚至不需要变量。Dim path As String
path = "C:\Users\Callum\Documents\Test Logs\" ' note the ending backslash
Set Folder = FSO.GetFolder(path)
For Each File In Folder.Files
Dim f As String
f = "='" & path & "[" & File.Name & "]Sheet1'!R4C2"
ThisWorkbook.Worksheets("Data").Cells(i + 1, 1).FormulaR1C1 = f
i = i + 1
Next File