为什么此文件始终保存为FALSE.xls?

时间:2009-01-20 21:42:45

标签: excel excel-vba vba

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

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

“无法在宏免费工作簿中保存以下功能:

  • VB项目

......有些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文件夹中。

3 个答案:

答案 0 :(得分:3)

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

1

Preventing False.xls when saving files in Excel

2

您在.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 ...