为什么这个文件总是保存为FALSE.xls?

我写了一个VB脚本,基于.xlt文件创build一个.xls文件。 然后它调用一个来自.xls文件的macros,用来填充数据库中的信息。 在最后一步,脚本将.xls文件保存在磁盘上。

我之前用VB和Excel 2003做了这个。现在我升级到Excel 2007,在保存文件之前,会popup一个窗口,告诉我:

“以下function无法保存在免费的macros工作簿中:

  • VB项目

一些亚达·亚达关于“是”和“否”的select。

和对话框中的是和否button。 “我想让脚本在对话框中自动select并执行”是“,但是我不知道该怎么做,我也发布了我写的脚本。

如果你有更好的方法,请分享。 谢谢,史蒂夫

Sub Main() Dim xl_app Set xl_app = CreateObject("Excel.Application") xl_app.Workbooks.Open("E:\Work\Send Mail\Clienti.xls") 'Run the macro xl_app.Run( "ImportData(""Data Source=SFA;Initial Catalog=Campofrio; Integrated Security=SSPI;Connect Timeout=3000"", -1, 47)") xl_app.ActiveWorkbook.SaveAs FileName="E:\Work\Send Mail\Clients.xls",FileFormat=xlNormal xl_app.Quit Set xl_app = Nothing End Sub 

现在鳕鱼工作,而不是将文件保存在指定的位置,它将其保存在FALSE.xls下的我的文档文件夹中。

合并海报提出的两个重复问题的答案:

1

在Excel中保存文件时防止False.xls

2

您正在使用.SaveAs错误中的命名参数。 当写出命名参数时,你必须以格式来完成

 FileName:="e:\myfile.xls" 

注意等号前的冒号。

如果你只是写Filename =“myfile.xls”,那么它的布尔比较将返回false。 这就是为什么它将文件保存为false.xls。

真的很有趣的错误,我认为。 ;)

我不确定这是否是问题,但不应该只是将其保存为.xlsm而不是.xls,这可以让您在Office 2007中保存启用macros的工作簿? 您可以检查运行macros的版本,如果它是Excel 2007,则另存为.xlsm,.xls,否则…

你真的需要保存包含的macros吗? 如果没有,请使用:ActiveWorkbook.SaveAs文件名:=“E:\ Work \ Send Mail \ Clients.xls”,FileFormat:= xlNormal

编辑:关键是所使用的扩展应该匹配指定的FileFormat。 上面的作品对我来说(排除macros)和下面的作品(包括macros)。 没有任何popup窗口,并且最终都在正确的目录中(正如提到的另一个海报,如果指定了FileName,则必须具有:=;否则,请使用下面的表单。

ActiveWorkbook.SaveAs“c:\ temp \ wordmacros \ mybook.xlsm”,xlOpenXMLWorkbookMacroEnabled