Vba 2016年Mac版Excel中的保存为CSV
我有经验的VBA开发人员,但没有足够的经验在Mac上完成我的非常简单的项目。我想将工作表导出到CSV,并将其保存到存储工作簿的同一目录中 我已经创建了一个新工作簿(ActiveWorkbook),其中包含从主工作簿复制的数据,并完全使用了Windows部分代码。但在Mac中,我无法使此部件正常工作,因此未创建任何文件: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
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