使用VBA/applescript将多个csv导入excel for mac

使用VBA/applescript将多个csv导入excel for mac,excel,vba,macos,applescript,Excel,Vba,Macos,Applescript,我正在寻找解决这个问题的办法 我有大量的.csv文件,我正在寻找一种方法将它们导入Excel,作为单个工作簿中的单独工作表 现在我已经在另外两个论坛上问过了,在得到一些帮助后,我得到了两个未完成的代码 首先是VBA Sub test() Dim MacReturn As String Dim FilePaths As Variant MacReturn = MacScript(ScriptString) FilePaths = Split(MacReturn, ",") If UBound(

我正在寻找解决这个问题的办法

我有大量的.csv文件,我正在寻找一种方法将它们导入Excel,作为单个工作簿中的单独工作表

现在我已经在另外两个论坛上问过了,在得到一些帮助后,我得到了两个未完成的代码

首先是VBA

Sub test()
Dim MacReturn As String
Dim FilePaths As Variant
MacReturn = MacScript(ScriptString)

FilePaths = Split(MacReturn, ",")

If UBound(FilePaths) = -1 Then
    MsgBox "chosen folder had no CSV files"
Else
    If FilePaths(0) = "false" Then
        MsgBox "cancel button pressed"
    Else
        MsgBox (UBound(FilePaths) + 1) & " CSV files in folder."
    End If
End If
End Sub

Function ScriptString() As String
ScriptString = "tell application ""Finder"""

ScriptString = ScriptString & vbCr & "    try"
ScriptString = ScriptString & vbCr & "        set CSVfiles to (files of (choose folder) whose    name extension = ""csv"")"
ScriptString = ScriptString & vbCr & "        set allPaths to {}"
ScriptString = ScriptString & vbCr & "        repeat with oneFile in CSVfiles"
ScriptString = ScriptString & vbCr & "            set OnePath to """""
ScriptString = ScriptString & vbCr & "            repeat until (name of oneFile = """")"
ScriptString = ScriptString & vbCr & "                set OnePath to (get name of (oneFile)) & "":"" & OnePath"
ScriptString = ScriptString & vbCr & "                set oneFile to (container of oneFile)"
ScriptString = ScriptString & vbCr & "            end repeat"
ScriptString = ScriptString & vbCr & "            copy (text 1 thru -2 of OnePath) to end of   allPaths"
ScriptString = ScriptString & vbCr & "        end repeat"
ScriptString = ScriptString & vbCr & "activate application ""Microsoft Excel"""
ScriptString = ScriptString & vbCr & "        return allPaths"
ScriptString = ScriptString & vbCr & "    on error"
ScriptString = ScriptString & vbCr & "activate application ""Microsoft Excel"""
ScriptString = ScriptString & vbCr & "        return false"
ScriptString = ScriptString & vbCr & "    end try"
ScriptString = ScriptString & vbCr & "end tell"

End Function
VBA似乎可以工作,当您点击OK nothing imports时,它会要求您选择一个文件夹

第二个是applescript

tell application "System Events"
set CSVfiles to path of (files of (choose folder) whose name extension = "csv")
end tell

tell application "Microsoft Excel"
activate
open workbook workbook file name "HD:Users:<my name>:Documents:Office:SOLAR:converted:Daily solar Generation.xlsx"
set targetSheet to worksheet 1 of workbook (name of active workbook)
repeat with thisFile in CSVfiles

    open text file filename thisFile data type delimited

    tell active workbook
        open workbook workbook file name "HD:Users:<myname>:Documents:Office:SOLAR:converted:Daily solar Generation .xlsx"
        set sourceBookName to its name
        set sourceSheet to sheet 1
    end tell
    copy worksheet sourceSheet after targetSheet
    close workbook sourceBookName
end repeat
end tell
告诉应用程序“系统事件”
将CSVfiles设置为(名称扩展名为“csv”的(选择文件夹)的文件)的路径
结束语
告诉应用程序“Microsoft Excel”
激活
打开工作簿文件名“HD:Users::Documents:Office:SOLAR:converted:Daily SOLAR Generation.xlsx”
将targetSheet设置为工作簿的工作表1(活动工作簿的名称)
在CSVfiles中重复此文件
打开文本文件名此文件数据类型已分隔
告诉活动工作簿
打开工作簿文件名“HD:Users::Documents:Office:SOLAR:converted:Daily SOLAR Generation.xlsx”
将sourceBookName设置为其名称
将sourceSheet设置为工作表1
结束语
将工作表源工作表复制到targetSheet之后
关闭工作簿sourceBookName
结束重复
结束语
这一个似乎挂起并与错误代码一起超时

错误“系统事件发生错误:AppleeEvent超时。”编号-1712


我已经做了差不多一个星期了,虽然很有趣。(我特别喜欢了解applescript),真的可以用一只手来找出其中一个或两个都有什么问题

Applescript挂起在
choose folder
,因为它位于
系统事件
告诉块中,但系统事件无法确定如何处理它。将文件夹从告诉块中移出,它应该可以工作

set theFolder to choose folder
tell application "System Events"
    set CSVfiles to path of (files of theFolder whose name extension = "csv")
end tell

Applescript挂起在
选择文件夹
,因为它位于
系统事件
告诉块中,但系统事件无法确定如何处理它。将文件夹从告诉块中移出,它应该可以工作

set theFolder to choose folder
tell application "System Events"
    set CSVfiles to path of (files of theFolder whose name extension = "csv")
end tell

如果您将范围缩小到似乎发生错误的几行,您可能更有可能得到响应;你可以用这些信息更新你的回复,这也是问题的一部分。VBA将进入“选择文件夹”框,单击“确定”不导入任何内容。Applescript只是挂起了错误代码。所以发了很多,但谢谢,我会尽量从现在起保持简短on@StevenWYou如果您将范围缩小到可能发生错误的几行,则更可能得到响应;你可以用这些信息更新你的回复,这也是问题的一部分。VBA将进入“选择文件夹”框,单击“确定”不导入任何内容。Applescript只是挂起了错误代码。所以发了很多,但谢谢,我会尽量从现在起保持简短on@StevenWMicrosoftExcel出现错误:无法继续打开工作簿。突出显示
打开工作簿文件名“HD:Users:my name:Documents:Office:SOLAR:converted:Daily SOLAR Generation.xlsx”
@DarrickI现在不在Mac上,但我相信
工作簿文件名
仅对当前打开的文件有效。请尝试打开(别名“路径:到:文件”)。Microsoft Excel出现错误:无法继续打开工作簿。突出显示
打开工作簿文件名“HD:Users:my name:Documents:Office:SOLAR:converted:Daily SOLAR Generation.xlsx”
@DarrickI现在不在Mac上,但我相信
工作簿文件名
仅对当前打开的文件有效。尝试打开(别名“路径:到:文件”)。