在升级到 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 解决了该问题。