我正在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:对象不支持此属性或方法。
答案 0 :(得分:3)
您不需要Set nExcel
行。这是为了从另一个应用程序(在Windows上)控制excel。您所需要的只是创建一个新的“工作簿”,因为您已经在Excel中,所以上下文已经存在,所以您需要做的就是用它替换它并删除错误检查:
Workbooks.Add