Vba 使用Excel宏将CSV导出到OS X上的~/Desktop

Vba 使用Excel宏将CSV导出到OS X上的~/Desktop,vba,excel,csv,Vba,Excel,Csv,我试图在OS X(2015)上使用Excel中的宏导出CSV。下面的代码以前工作过…但现在失败了。不幸的是,我发现所有的信息都是Windows独有的 我可以定义确切的文件路径,但在任何OSX机器上都需要它,因此定义用户主目录很重要 Sub export_csv() ' export csv to ~/Desktop user_dir = user_dir + MacScript("(do shell script ""cd ~; pwd "")") file_name =

我试图在OS X(2015)上使用Excel中的宏导出CSV。下面的代码以前工作过…但现在失败了。不幸的是,我发现所有的信息都是Windows独有的

我可以定义确切的文件路径,但在任何OSX机器上都需要它,因此定义用户主目录很重要

Sub export_csv()
    ' export csv to ~/Desktop
    user_dir = user_dir + MacScript("(do shell script ""cd ~; pwd "")")
    file_name = user_dir & "/Desktop/excel_export.csv"

    ActiveWorkbook.SaveAs Filename:=file_name, FileFormat:=xlCSV, CreateBackup:=False

End Sub

问题是,我没有任何OSX来测试它。但我认为一个问题是如果你的工作簿中有太多的工作表

Sub CSV()
Dim ws As Excel.Worksheet

Dim strDirectory As String
Dim strCurWB As String
Dim longCurFor As Long

strCurWB = ThisWorkbook.FullName
longCurFor = ThisWorkbook.FileFormat
' Store current details for the workbook

'get Path for User Desktp
strDirectory = CreateObject("WScript.Shell").specialfolders("Desktop") & "\"
'Loop though each Sheet in the Workbook
For Each ws In ThisWorkbook.Worksheets
    Sheets(ws.Name).Copy
    ActiveWorkbook.SaveAs Filename:=strDirectory & ThisWorkbook.Name & "-" & ws.Name & ".csv", FileFormat:=xlCSV
    ActiveWorkbook.Close savechanges:=False
    ThisWorkbook.Activate
Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=strCurWB, FileFormat:=longCurFor
Application.DisplayAlerts = True
End Sub

我希望这个代码示例可以帮助您,您也可以将一些代码转移到OSX。

我发现运行时错误“429”:ActiveX组件无法创建对象。@bryan您可以打开一个新的任务并发布代码吗?@bryan您从哪里得到错误?请打开一个新的Question@bryan将“CreateObject”(“WScript.Shell”).specialfolders(“Desktop”)和“\”替换为您想要的CSV路径