我创建了一个在点击按钮上启动的脚本,因此它从路径和格式加载CSV文件而不是保存它。因为我有1 ... 10000的文件,所以我制作文件像1.txt等等。 我遇到的问题是当它启动过程一切顺利但是在10-13文件之后它会给出错误并且excel关闭。以下是我正在使用的代码。请帮助我在哪里做错了。我想我在数组中做错了我试过redim但是那个给了我同样的错误。这是我放在我的按钮上开始进程的子。由于我有超过数千个文件,所以请建议我解决方案。
Sub WorkbooksLoop()
' get the list of filenames
Dim pageStart As Integer
Dim pageEnd As Integer
pageStart = CInt(Cells(3, "C").Value) ' getting from cell of excel sheet
pageEnd = CInt(Cells(4, "C").Value) ' getting from cell of excel sheet
Dim Filenames(44) As String ' variable I know there are 44 files
For j = pageStart To pageEnd
Filenames(j) = CStr(j) + ".txt"
Next j
On Error GoTo NoFilenames
Dim controllerwb As Workbook
Set controllerwb = ActiveWorkbook
Dim wb As Workbook
Dim fname As Variant
Dim rootPath As String
rootPath = ThisWorkbook.Path
rootPath = rootPath & "\"
For Each fname In Filenames
' Make the controller active
controllerwb.Activate
On Error Resume Next
' If activate fails, then the workbook isn't open
Workbooks(fname).Activate
' If activate fails, then the workbook isn't open
If Err <> 0 Then
OpenFile (rootPath & fname)
Set wb = ActiveWorkbook
wb.Activate
' Otherwise, workbook is already open, refer to it by name
Else
OpenFile (rootPath & fname)
Set wb = ActiveWorkbook
End If
' do something to the open workbook my process to format sheet
deletingRowsColumns
ledgerSetup
resizeColumns
columnLines
columnAlignments
mergeTitles
settingNames
wb.Close
Next fname
NoFilenames:
End Sub
答案 0 :(得分:0)
我做了所有事情,并以不同的方式重新编码。但仍然在10-20个文件后通过错误。因为我在我的Mac上使用Windows机器作为虚拟机,所以我只是想我为什么不在使用microsoft office的mac上尝试它。并且必须将目录的正斜杠更改为冒号(有趣的是我认为它应该是反斜杠但这就是vba正在做的)并且它起作用我得到一些文件没有保存的警报,但它是好的至少我可以做1000文件很容易休息我可以手动保存。但它确实有效,虽然vba引擎在mac中有点慢,但谁在乎我只是花了几个小时为我做所有文件。 感谢你的帮助。 Mike是的,我需要了解有关ActiveWorkbook和脚本的更多信息。我会像你告诉我的那样尝试做,但我的工作完成了。谢谢