我有一个宏文件,其中有一段代码在VBA中使用.csv
尝试将.xls
文件另存为ActiveWorkbook.SaveAs
文件。
实际上,我打开了一个excel文件,现在从命令提示符处我将".csv"
文件路径和"Macro.xls"
文件作为参数传递给Excel.exe。首先,它启动.csv文件,在Macro.xls的最后一段代码中,我发现".csv"
文件已保存为".xls"."c:\\1\\2\\dummy.csv"
到"c:\\1\\2\\dummy.xls"
。
当使用文件名"c:\\1\\2\\dummy.xls"
调用ActiveWorkbook.SaveAs时,它会抛出错误1004.如果我的机器中没有打开excel文件,它工作正常。
只有在某些Excel文件已经打开时才会出现此问题。
My Code:
ActiveWorkbook.SaveAs Filename:= _
xls_file_name, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="",
ReadOnlyRecommended:=False _
, CreateBackup:=False
xls_file_name:Dummy.xls
我是VB的新手。任何人都可以建议我解决这个问题。这在excel 2016尤其如此。在excel 2010中它运行良好。
答案 0 :(得分:0)
最后,我得到了导致SaveAs
失败的原因。
正如我所提到的,当excel打开时,它无法保存,因为我的应用程序以管理员权限运行,我写的文件夹需要在管理员中运行excel才能保存在该文件夹中。当我在管理模式下启动excel并尝试执行我的方案时,它就成功保存了。
SaveAs
成功的情况是没有打开excel时。因此,在这种情况下,当我从我的应用程序启动excel时,它将以管理员模式启动,因为我的应用程序以高权限启动,因此文件成功保存。
简而言之,这完全取决于访问级别。
在Windows 7中,每个excel应用程序都作为单独的进程启动,因此当我在Windows 7中启动它时,它以管理模式启动。 - > BOOK1.XLS - >
在Windows 10中,每个Excel应用程序都将位于主进程EXCEL.EXE
下。
例如:
EXCEL.EXE
->BOOk1.xls
->BOOK2.xls
在这种情况下,“EXCEL.EXE”以非管理员模式启动,无法保存到缺少管理员权限的文件夹。
这些是调查结果,想与大家分享。希望它可以帮助遇到类似问题的人。