如何使用VBA for Mac创建新的Excel文件

时间:2015-09-04 21:57:32

标签: macos vba excel-vba excel

我正在Excel 2011 for Mac中创建一个宏来创建报告。部分宏想要打开文件(99%的时间),编辑文件,然后关闭文件(保存更改)。在极少数情况下,如果文件不存在,它想要创建一个新的Excel文件,编辑它,然后关闭该文件(保存更改)。

我已成功创建了使用现有问题和在线答案打开现有文件的功能。但是,如果找不到文件,我无法确定创建文件的方法。如果我尝试简单地打开一个不存在的文件,那么它就会出错。

以下是代码:

Dim nExcel As Object
Dim nWB As Object
If FileOrFolderExistsOnMac(1, strFile) Then
        Workbooks.Open (strFile)
        ...
        ActiveWorkbook.Close SaveChanges:=True
    Else
        'Note: I understand that this check should be redundant
        Set nExcel = GetObject(, "excel.application") 'gives error 429 if Excel is not open
        If Err = 429 Then
            Set nExcel = CreateObject("excel.application") 'create
            Err.Clear
        End If
        'Set nWB = nExcel.documents.Add
        ...
        ActiveWorkbook.Close SaveChanges:=True
    End If

好的,语句的If块有效。在Else块中,我可以找到创建不存在的文件的唯一相关帖子是:Create Word file from Excel 2011

显然,Word与Excel不同,并且希望它们具有相似的语法是一个牵强的梦想。但是,我继续尝试了,它一直运行,直到它到达注释掉的行,我设置nWB = nExcel.documents.Add,运行时错误438:对象不支持此属性或方法。

1 个答案:

答案 0 :(得分:3)

您不需要Set nExcel行。这是为了从另一个应用程序(在Windows上)控制excel。您所需要的只是创建一个新的“工作簿”,因为您已经在Excel中,所以上下文已经存在,所以您需要做的就是用它替换它并删除错误检查:

Workbooks.Add