我写了一个基于.xlt文件创建.xls文件的VB脚本。然后它从.xls文件调用一个宏,该宏用数据库中的信息填充它。在最后一步中,脚本将.xls文件保存在磁盘上。
我之前用VB和Excel 2003做过这个。现在我升级到Excel 2007,在保存文件之前,弹出一个窗口并告诉我:
“无法在宏免费工作簿中保存以下功能:
......有些yada yada关于Yes和No选项的用途。
对话框中的是和否按钮。 “ 我希望脚本在对话框中自动选择并执行Yes。但我无法想象如何做到这一点。我还发布了我写的剧本。
如果您有更好的方法,请分享。 谢谢, 史蒂夫
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下的My Documents文件夹中。
答案 0 :(得分:3)
合并海报提出的两个重复问题的答案:
Preventing False.xls when saving files in Excel
您在.SaveAs中使用的命名参数是错误的。在写出命名参数时,您必须以
格式执行此操作FileName:="e:\myfile.xls"
注意等号前的冒号。
如果您只是编写Filename =“myfile.xls”,那么它将返回false的布尔比较。这就是为什么它将文件保存为false.xls。
我觉得真有趣的错误。 ;)
答案 1 :(得分:0)
你真的需要用包含的宏来保存吗?如果没有,请使用: ActiveWorkbook.SaveAs文件名:=“E:\ Work \ Send Mail \ Clients.xls”,FileFormat:= xlNormal
编辑:关键是使用的扩展名应该与指定的FileFormat匹配。上面的工作对我来说(排除宏)和下面的工作对我来说(包括宏)。没有任何弹出窗口,并且两者都在正确的目录中(如另一张海报所提到的,如果指定FileName,则必须具有:=;否则,请使用下面的表单。
ActiveWorkbook.SaveAs“c:\ temp \ wordmacros \ mybook.xlsm”,xlOpenXMLWorkbookMacroEnabled
答案 2 :(得分:0)
我不确定这是不是问题,但是你不应该只是将其保存为.xlsm而不是.xls,这样可以在Office 2007中保存启用宏的工作簿吗?您可以检查宏运行的版本,如果是Excel 2007,则保存为.xlsm,否则为.xls ...