Vba 2016年Mac版Excel中的保存为CSV

Vba 2016年Mac版Excel中的保存为CSV,vba,macos,excel,csv,Vba,Macos,Excel,Csv,我有经验的VBA开发人员,但没有足够的经验在Mac上完成我的非常简单的项目。我想将工作表导出到CSV,并将其保存到存储工作簿的同一目录中 我已经创建了一个新工作簿(ActiveWorkbook),其中包含从主工作簿复制的数据,并完全使用了Windows部分代码。但在Mac中,我无法使此部件正常工作,因此未创建任何文件: ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv", _ Fil

我有经验的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文件

您能建议我必须在代码中设置哪个GetSaveAsFileFilter值来强制CSV保存而不是XLSX吗?或者使用其他VBA解决方案(文件格式更改、保存后重命名等)

谢谢,,
Viacheslav

尝试将第一部分更改为以下内容:

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
如果是Mac那么
OutputFile=ThisWorkbook.Path&Replace(ActiveWorkbook.Name、.xls、“-”&.csv)
如果OutputFile为False,则
Application.DisplayAlerts=False
ActiveWorkbook.SaveAs文件名:=OutputFile,文件格式:=xlCSV,CreateBackup:=False
Application.DisplayAlerts=True
如果结束

看看罗恩做了什么:我也读过。该代码基于一个循环,用户必须在“文件类型”下拉列表中选择适当的格式。但我需要继续,因为可能每个活动工作簿还没有名字,所以用户端没有任何操作-这是Workbooks.Add的结果。我也尝试过类似的方法:如果不调用应用程序,它在2016年将无法工作。GetSaveAsFileanmeI遵循以下方法:但文件类型仍然是xlsx,如第二个屏幕截图所示
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