art*_*ork 5 csv macos excel vba excel-vba
我是VBA开发人员,但在Mac上没有足够的经验来完成我非常简单的项目.我想将工作表导出为CSV并将它们保存到工作簿存储的同一目录中.
我已经创建了一个新的工作簿(ActiveWorkbook),其中包含从主工作簿复制的数据和完全工作的Windows部分代码.但在Mac中我无法使这部分工作,结果中没有创建文件:
ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
Run Code Online (Sandbox Code Playgroud)
我读了几个来源,发现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
Run Code Online (Sandbox Code Playgroud)
Macro使用数据创建文件,但它们以XLSX而不是CSV格式保存:
和对话框有xlsx作为默认格式: 
当我尝试设置FileFilter时,我没有再次保存文件(我假设Mac不支持此属性).当我尝试更换时:
s_fname=replace(s_fname,".xslx",".csv")
Run Code Online (Sandbox Code Playgroud)
我的文件夹中仍然有.xlsx文件.
你能否建议我在代码中设置哪个GetSaveAsFilename FileFilter值来强制CSV保存而不是XLSX?或者anotehr VBA解决方案(文件格式更改,保存后重命名等).
谢谢Viacheslav
小智 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |