使用Workbook.打开已知文件位置会导致"无法找到运行时错误1004 <file>"

Ins*_*ast 2 excel vba excel-vba

我正在构建一个实用程序来从特定文件中获取数据并将该数据传输到另一个文件.源文件都具有相同的命名约定,其中包含一个相同的字符串,可用于将它们与目录中的其他文件区分开来.目的是使用带有通配符的字符串打开文件并提取所需的数据.

我在Workbook.Open昨天咨询了这个StackOverflow帖子Office开发中心的这个条目之后,我以为我曾经使用过通配符,但今天我尝试运行我的测试代码并且VBA声称没有找到该文件(尽管文本另有说明).

我的测试代码没有太大问题:

Dim strFilePath As String
    strFilePath = "C:\...\KMMacros\DeepLinkTransferFromSabaForm\"
Dim strFileName As String
    strFileName = "*SabaEntryForm.xlsx"

Workbooks.Open FileName:=Dir$(strFilePath & strFileName), ReadOnly:=True
Run Code Online (Sandbox Code Playgroud)

错误读取

找不到'TEST_KM6.7-3_BRSTA_SabaEntryForm.xlsx'.检查文件名的拼写,并验证文件位置是否正确.

和调试亮点

Workbooks.Open FileName:=Dir$(strFilePath & strFileName), ReadOnly:=True
Run Code Online (Sandbox Code Playgroud)

因为错误特别提到了我打算打开的文件,并且因为我的代码没有给出特定的文件名,所以VBA似乎找到了该文件,即使错误另有说明.

VBA如何找到该文件的名称,然后声称它无法找到它?我究竟做错了什么?

Tim*_*ams 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
Run Code Online (Sandbox Code Playgroud)