我正在构建一个实用程序来从特定文件中获取数据并将该数据传输到另一个文件。源文件都具有相同的命名约定,其中包含一个相同的字符串,可用于将它们与目录中的其他文件区分开来。目的是使用带有通配符的字符串打开文件并提取所需的数据。
我认为我在咨询this StackOverflow post和this entry in the Office Dev Center之后昨天Workbook.Open
使用了通配符,但今天我尝试运行我的测试代码并且VBA声称没有找到该文件(尽管文字另有说明。)
我的测试代码没有太大问题:
Dim strFilePath As String
strFilePath = "C:\...\KMMacros\DeepLinkTransferFromSabaForm\"
Dim strFileName As String
strFileName = "*SabaEntryForm.xlsx"
Workbooks.Open FileName:=Dir$(strFilePath & strFileName), ReadOnly:=True
错误读取
找不到'TEST_KM6.7-3_BRSTA_SabaEntryForm.xlsx'。检查 拼写文件名,并验证文件位置是否正确 正确的。
和调试亮点
Workbooks.Open FileName:=Dir$(strFilePath & strFileName), ReadOnly:=True
因为错误明确提到了我打算打开的文件,并且因为我的代码没有给出特定的文件名,所以VBA似乎找到了该文件,即使错误另有说明。
VBA如何找到该文件的名称,然后声称它无法找到它?我做错了什么?
答案 0 :(得分:6)
Dir()
只返回文件名,而不是整个路径,因此如果您当前的目录与传递给Dir的文件夹不同,那么您将遇到此问题。
Dim strFilePath As String
strFilePath = "C:\...\KMMacros\DeepLinkTransferFromSabaForm\"
Dim strFileName As String
strFileName = "*SabaEntryForm.xlsx"
Workbooks.Open FileName:=strFilePath & Dir$(strFilePath & strFileName), _
ReadOnly:=True