在 Excel for Mac 2016 中另存为 CSV

Posted

技术标签:

【中文标题】在 Excel for Mac 2016 中另存为 CSV【英文标题】:SaveAs to CSV in Excel for Mac 2016 【发布时间】:2018-11-01 04:21:17 【问题描述】:

我是一位经验丰富的 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: 和对话框的默认格式为 xlsx:

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

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

我的文件夹中还有 .xlsx 文件。

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

谢谢你, 维亚切斯拉夫

【问题讨论】:

看看 Ron 做了什么:rondebruin.nl/mac/mac016.htm 我也读过。该代码基于用户必须在 FileType 下拉列表中选择正确格式的循环。但我需要继续的是尽可能不从用户端采取任何行动 【参考方案1】:

你好,试着把第一部分改成这个:

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

【讨论】:

ActiveWorkbook 还没有名称 - 它是 Workbooks.Add 的结果。我也尝试了类似的方法:如果不调用 Application.GetSaveAsFileanme ,它将无法在 2016 年工作 我遵循这种方式:link to ms 但文件类型仍然是 xlsx,如您在第二张截图中看到的那样

以上是关于在 Excel for Mac 2016 中另存为 CSV的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 使用单元格文本作为文件名在当前目录中另存为

在javascript中另存为csv文件

在 MS Word 2010 中另存为的键盘快捷键

Applescript Excel 2016 另存为 CSV

Laravel 刀片:如何删除预先填充的表单字段数据(在 db 中另存为空)

PySpark:将临时视图转换为表格并在本地驱动器中另存为 .CSV