我正在寻找解决这个问题的方法。
我有大量的.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时选择一个文件夹没有导入???
第二个是所有的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
这个似乎挂起并超时,错误代码
错误“系统事件出错:AppleEvent超时。”编号-1712
我已经待了将近一个星期而且很有趣。 (我喜欢特别了解Applecript),真的可以用一只手试图弄清楚其中一个或两个有什么问题!!
答案 0 :(得分:0)
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