VBA 运行时错误 1004:对象“工作簿”的方法“OpenText”失败

VBA 运行时错误 1004:对象“工作簿”的方法“OpenText”失败

在升级到 Excel 2010(从 2003 开始​​)后,用于标准化 Access 导入数据的脚本停止工作。它返回错误:“运行时错误‘1004’:对象‘Workbooks’的方法‘OpenText’失败”。

在 OpenText 部分之前,宏会根据创建日期在文件夹中搜索最新的文件,然后返回文件名和路径。

相关代码为:

Workbooks.OpenText FileName:=myDir & "\" & strFilename, _
    Origin:=-535, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
    Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _
    Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15 _
    , 2), Array(16, 3), Array(17, 3), Array(18, 3), Array(19, 3), Array(20, 2), Array(21, 2), _
    Array(22, 1), Array(23, 2), Array(24, 2), Array(25, 3), Array(26, 2), Array(27, 2), Array( _
    28, 2)), TrailingMinusNumbers:=True

知道什么原因导致 Excel 2010 挂起吗?

该文件仍然是一个 .xls 文件,并且在兼容模式下运行,我在任何其他宏中还没有遇到过问题。

录制新宏并与旧宏进行比较后更新:

新的宏有一个不同之处,即 Origin 参数。

在旧的宏中:

Origin:=-535

新的宏:

Origin:=65001

阅读 Origin,这似乎是要导入的文件的来源,可以省略。

Origin 对导入有何重要性?DataType 已指定。Origin 是否控制编码?

从原始宏中删除 Origin,会返回相同的错误。将 Origin 值更改为 65001 仍会返回相同的错误。

答案1

检查路径:

UserProfileFolder = Environ("UserProfile")

Workbooks.OpenText Filename:

在Office 2003中XP的环境路径是:

%systemDrive%\Documents and Settings\{user}\My Documents

对于 Vista 和 Windows 7 则是:

%systemdrive%\users\Documents

其中 %systemdrive% 通常为 C:

答案2

@datatoo,你给我指明了正确的方向。这是一个变量/路径问题。不知何故,我开始使用 strFullFile 作为字符串来获取完整的文件路径字符串。但是,我也只是修改了 strFileName,在前面添加了 myDir 字符串以创建完整的文件路径。删除并将对 strFullFile 的适当引用更改为 strFileName 解决了该问题。

相关内容