Импорт нескольких CSV в Excel для Mac с использованием VBA / AppleScript

Я нахожусь в поиске решения этой проблемы.

У меня есть большое количество файлов.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, кажется, работает и просит вас выбрать папку, когда вы нажмете ОК, ничего не импортирует???

Второе - это весь яблочный скрипт

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

Этот, кажется, зависает и время ожидания с кодом ошибки

ошибка "Системные события получили ошибку: AppleEvent истекло время ожидания." номер -1712

Я занимаюсь этим почти неделю, и пока это весело. (Мне особенно понравилось знакомство с applecript), я действительно мог использовать руку, пытаясь выяснить, что не так с обоими или обоими!!

1 ответ

Applescript висит на choose folder потому что это в System Events Блок Tell, но системные события не могут понять, что с ним делать. Переместите выбранную папку из блока Tell, и она должна работать.

set theFolder to choose folder
tell application "System Events"
    set CSVfiles to path of (files of theFolder whose name extension = "csv")
end tell
Другие вопросы по тегам