对于mac,是否有Excel 2011 VBA中的Scripting.FileSystemObject的替代方案?
对的回答似乎表明,在Excel 2010中为mac使用对于mac,是否有Excel 2011 VBA中的Scripting.FileSystemObject的替代方案?,excel,vba,macos,filesystemobject,Excel,Vba,Macos,Filesystemobject,对的回答似乎表明,在Excel 2010中为mac使用脚本.FileSystemObject是不可能的 还有什么备选方案可用,我可以: 获取特定目录中所有Excel文件的集合 遍历每个文件中的每个工作表,并将其导出到.csv文件中 目前,每个文件都有六个步骤: --how to create CSV files for all worksheets in a file: 1. open file 2. click "Developer" 3. click editor 4. click Th
脚本.FileSystemObject
是不可能的
还有什么备选方案可用,我可以:
- 获取特定目录中所有Excel文件的集合
- 遍历每个文件中的每个工作表,并将其导出到.csv文件中
--how to create CSV files for all worksheets in a file:
1. open file
2. click "Developer"
3. click editor
4. click ThisWorkbook
5. copy in:
Sub save_all_csv()
On Error Resume Next
Dim ExcelFileName As String
ExcelFileName = ThisWorkbook.Name
For Each objWorksheet In ThisWorkbook.Worksheets
Filename = "FILE-" & ExcelFileName & "-WORKSHEET-" & objWorksheet.Name & ".csv"
objWorksheet.SaveAs Filename:="Macintosh HD:Users:edward:Documents:temporaryNoBackup:" & Filename, FileFormat:=xlCSV, CreateBackup:=False
Next
Application.DisplayAlerts = False
Application.Quit
End Sub
6. click run (it closes by itself)
我正在寻找一种方法,在Mac上自动执行此操作,理想情况下,(cron作业?、服务?)会每10分钟打开一次excel文件,然后查看目录,将所有其他excel文件转换为.csv文件,然后自行关闭
如果没有Scripting.FileSystemObject,我如何在Mac上实现Excel到CSV的完全自动转换?我能想到的唯一方法是使用“Dir”函数。由于mac在文件名中支持额外字符,所以通配符不能与“Dir”函数一起使用。这是一个样本
Function GetFileList(folderPath As String) As Collection
'mac vba does not support wildcards in DIR function
Dim file As String
Dim returnCollection As New Collection
If Right$(folderPath, 1) <> "/" Then
folderPath = folderPath & "/"
End If
file = Dir$(folderPath) 'setup initial file
Do While Len(file)
returnCollection.Add folderPath & file
file = Dir$
Loop
Set GetFileList = returnCollection
End Function
函数GetFileList(folderPath作为字符串)作为集合
'mac vba不支持DIR函数中的通配符
将文件设置为字符串
作为新的收藏收藏收藏
如果右$(folderPath,1)“/”则
folderPath=folderPath&“/”
如果结束
file=Dir$(folderPath)'设置初始文件
边做边读(文件)
returnCollection.addfolderpath和file
file=Dir$
环
设置GetFileList=returnCollection
端函数
我能想到的唯一方法就是使用“Dir”函数。由于mac在文件名中支持额外字符,所以通配符不能与“Dir”函数一起使用。这是一个样本
Function GetFileList(folderPath As String) As Collection
'mac vba does not support wildcards in DIR function
Dim file As String
Dim returnCollection As New Collection
If Right$(folderPath, 1) <> "/" Then
folderPath = folderPath & "/"
End If
file = Dir$(folderPath) 'setup initial file
Do While Len(file)
returnCollection.Add folderPath & file
file = Dir$
Loop
Set GetFileList = returnCollection
End Function
函数GetFileList(folderPath作为字符串)作为集合
'mac vba不支持DIR函数中的通配符
将文件设置为字符串
作为新的收藏收藏收藏
如果右$(folderPath,1)“/”则
folderPath=folderPath&“/”
如果结束
file=Dir$(folderPath)'设置初始文件
边做边读(文件)
returnCollection.addfolderpath和file
file=Dir$
环
设置GetFileList=returnCollection
端函数
您可以将VBA放在附加到Excel本身的加载项(.xlam文件)中,而不是放在工作簿中。对于示例代码,唯一的修改是针对ActiveWorkbook
而不是ThisWorkbook
编写
Sub save_all_csv()
On Error Resume Next
Dim ExcelFileName As String
ExcelFileName = ActiveWorkbook.Name
For Each objWorksheet In ActiveWorkbook.Worksheets
Filename = "FILE-" & ExcelFileName & "-WORKSHEET-" & objWorksheet.Name & ".csv"
objWorksheet.SaveAs Filename:="Macintosh HD:Users:edward:Documents:temporaryNoBackup:" & Filename, FileFormat:=xlCSV, CreateBackup:=False
Next
Application.DisplayAlerts = False
Application.Quit
End Sub
您还可以利用auto_open()自动绑定热键。完成后,您可以打开工作簿,按热键,然后获取CSV文件
Public Sub auto_open()
' Register hotkeys
' See key codes here
' https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-onkey-method-excel
' ^ = CTRL
' % = ALT
' + = SHIFT
Application.OnKey "^+e", "save_all_csv" ' Ctrl+Shift+E will call save_all_csv()
End Sub
您可以将VBA放在附加到Excel本身的加载项(.xlam文件)中,而不是放在工作簿中。对于示例代码,唯一的修改是针对
ActiveWorkbook
而不是ThisWorkbook
编写
Sub save_all_csv()
On Error Resume Next
Dim ExcelFileName As String
ExcelFileName = ActiveWorkbook.Name
For Each objWorksheet In ActiveWorkbook.Worksheets
Filename = "FILE-" & ExcelFileName & "-WORKSHEET-" & objWorksheet.Name & ".csv"
objWorksheet.SaveAs Filename:="Macintosh HD:Users:edward:Documents:temporaryNoBackup:" & Filename, FileFormat:=xlCSV, CreateBackup:=False
Next
Application.DisplayAlerts = False
Application.Quit
End Sub
您还可以利用auto_open()自动绑定热键。完成后,您可以打开工作簿,按热键,然后获取CSV文件
Public Sub auto_open()
' Register hotkeys
' See key codes here
' https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-onkey-method-excel
' ^ = CTRL
' % = ALT
' + = SHIFT
Application.OnKey "^+e", "save_all_csv" ' Ctrl+Shift+E will call save_all_csv()
End Sub