在ActiveWorkBook.SaveAs调用

时间:2017-07-26 13:53:15

标签: vb.net excel-2016

我有一个宏文件,其中有一段代码在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中它运行良好。

1 个答案:

答案 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”以非管理员模式启动,无法保存到缺少管理员权限的文件夹。

这些是调查结果,想与大家分享。希望它可以帮助遇到类似问题的人。