使用Workbook。打开已知文件位置会产生“无法找到运行时错误1004 <file>”</file>

时间:2014-01-08 22:11:55

标签: excel excel-vba vba

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

我认为我在咨询this StackOverflow postthis 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如何找到该文件的名称,然后声称它无法找到它?我做错了什么?

1 个答案:

答案 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