在Excel for Mac 2016中保存为CSV

时间:2018-05-22 11:52:06

标签: excel vba macos excel-vba csv

我是VBA开发人员,但在Mac上没有足够的经验来完成我非常简单的项目。我想将工作表导出为CSV并将它们保存到工作簿存储的同一目录中。

我已经创建了一个新工作簿(ActiveWorkbook),其中包含从主工作簿复制的数据和完全工作的Windows部分代码。但在Mac中,我无法使这部分工作,结果中没有创建文件:

ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv", _
    FileFormat:=xlCSV, CreateBackup:=False 

我读了几个来源,发现Excel for Mac 2016需要调用带有初始文件名的GetSaveAsFilename对话框并手动确认,所以我修改了我的代码:

#If Mac Then
    s_fname = Application.GetSaveAsFilename(InitialFileName:= _
        ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv")                                          

    If s_fname <> False Then
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs s_fname, 6                                                     
        Application.DisplayAlerts = True
    End If
#Else
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
    ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False                                     
    Application.DisplayAlerts = True
#End If

宏创建包含数据的文件,但它们以XLSX而不是CSV格式保存: No CSV but XLSX created并且对话框将xlsx作为默认格式:SaveAs Filetype default

当我尝试设置FileFilter时,我没有再次保存文件(我假设Mac不支持此属性)。当我尝试更换时:

s_fname=replace(s_fname,".xslx",".csv") 

我的文件夹中仍然有.xlsx文件。

您能否建议我必须在代码中设置哪个GetSaveAsFilename FileFilter值来强制CSV保存而不是XLSX?或者anotehr VBA解决方案(文件格式更改,保存后重命名等)。

谢谢你, 维亚切

1 个答案:

答案 0 :(得分:0)

您可以尝试更改第一部分:

If Mac Then
    OutputFile = ThisWorkbook.Path & Replace(ActiveWorkbook.Name, ".xls", "-") & ".csv"                                          

    If OutputFile <> False Then
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=OutputFile, FileFormat:=xlCSV, CreateBackup:=False                                                     
        Application.DisplayAlerts = True
    End If