我正在尝试运行 vba 代码来对 Excel 文件的文件夹执行许多操作。该代码是由不再在我公司工作的其他人编写的,但 VBA 脚本在上次运行时有效。现在,当我尝试运行它时,我不断收到运行时错误 52(“文件名或编号错误”)。有什么建议吗?
代码更长,但错误(根据调试器)突出显示如下:
Print #intFreeFile, _
" *XXXXXXXXX * * * Error in code 'main_ProcessBringFwd' " & Err & ": " & _
Error(Err)
问题可能出在错误消息中。 打开代码并查找尝试读取或保存文件的命令。他们可能使用了无效的路径。
在你的代码中的某个地方可能有这样的东西:
Open file_name For Output As #intFreeFile
调试您的代码并检查“file_name”中的值(可能是其他变量名称)是否是有效的路径和有效的文件名。
如果文件是网络文件,那么如果临时出现网络故障,程序可能无法找到该文件,我已经遇到过这个问题好几次了。
解决此类错误的方法是在打开文件之前检查驱动器/文件夹是否存在。
如果目标目录不存在,或者您没有写入权限,则可能会发生这种情况
我发现当我收到此错误消息时,是因为我试图在文件名中使用
:
。我一删除它,宏就完美运行了。我认为当涉及到特殊字符时可能会与代码发生冲突。
我也遇到了这个问题,并找到了导致此错误消息的另一个原因。
我从中获取文件的数据库每天都有一个具有不同天气参数的文件。我将仔细检查每个文件,为所有值/天创建一个表。
我使用变量 intFileNumber 来计算我在文件夹中浏览的每个文件。然后就有了代码:
Open strFilePathAndName For Input As intFileNumber.
当 intFileNumber 达到大约时。 500 它停止并显示错误消息 52。修复方法是只覆盖每次迭代的文件编号。即:
Open strFilePathAndName For Input As #1.
=> 这样做是有道理的,哈哈...