【发布时间】:2017-01-01 23:55:49
【问题描述】:
我正在 Excel 2016 for Mac 中运行 VBA 宏。该宏适用于装有 Excel 2016 的 Windows 平台,以及低于 2016 版本的 Mac 平台。尝试导出 CSV 时,此问题似乎特定于 Excel 2016 for Mac。
该代码应该允许用户单击按钮,然后将活动工作表导出到 CSV 文件。虽然此处记录了类似的问题 (Getting "method saveas of object _workbook failed" error while trying to save an XLSM as CSV),但不幸的是,虽然将 xlCSV 更改为 6 对他们有用,但这对我不起作用。
代码一直运行到ActiveWorkbook.SaveAs Filename:=newFileName, FileFormat:=6, CreateBackup:=False 行,然后抛出错误:
运行时错误“1004”:对象“_Workbook”的方法“SaveAs”失败
如果我将 FileFormat 更改为 51 (.xlsx) 或 53 (.xlsm),代码将成功完成。但是,如果 FileFormat 设置为 6 (.csv),则代码将引发上述错误。我无法SaveAsxlCSV 或xlCSVMac。
我的完整脚本如下:
Sub btnExportCSV_Click()
Dim oldFileName As String
Dim newFileName As String
Dim timeStamp As String
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates
Dim wsPath As String
timeStamp = Format(Now, "yyyymmddhhmmss")
wsPath = Application.ThisWorkbook.Path
oldFileName = ThisWorkbook.FullName
newFileName = Mid(oldFileName, 1, InStrRev(oldFileName, ".") - 1) & timeStamp & ".csv"
' Check if software is Office 2016 for Mac
' Documentation for this comes from https://dev.office.com/blogs/VBA-improvements-in-Office-2016
#If MAC_OFFICE_VERSION >= 15 Then
filePermissionCandidates = Array(wsPath)
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
#End If
Application.DisplayAlerts = False
Sheets("OfflineComments").Activate
Sheets("OfflineComments").Copy
ActiveWorkbook.SaveAs Filename:=newFileName, FileFormat:=6, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
MsgBox ("Offline comments exported to " & newFileName)
Application.DisplayAlerts = True
End Sub
我试过了:
- 为输入/输出文件名添加完整路径
- 确保检查该版本的 Excel 并且用户允许权限
-
FileFormat参数的各种文件类型,但如前所述,实际上只有两种类型有效。 - 尝试上述链接文章中提到的代码,但没有帮助(这就是我在此处发布原始代码的原因)。
【问题讨论】:
-
这里有一些更新的信息,现在:answers.microsoft.com/en-us/msoffice/forum/… 对于那些感兴趣的人来说,这个问题似乎与 Apple 沙盒出现的新权限问题有关。
标签: excel vba macos macros excel-2016