保存10个文件后Excel给我错误

时间:2016-03-28 16:10:04

标签: vba excel-vba csv excel-2007 excel

我创建了一个在点击按钮上启动的脚本,因此它从路径和格式加载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

1 个答案:

答案 0 :(得分:0)

我做了所有事情,并以不同的方式重新编码。但仍然在10-20个文件后通过错误。因为我在我的Mac上使用Windows机器作为虚拟机,所以我只是想我为什么不在使用microsoft office的mac上尝试它。并且必须将目录的正斜杠更改为冒号(有趣的是我认为它应该是反斜杠但这就是vba正在做的)并且它起作用我得到一些文件没有保存的警报,但它是好的至少我可以做1000文件很容易休息我可以手动保存。但它确实有效,虽然vba引擎在mac中有点慢,但谁在乎我只是花了几个小时为我做所有文件。 感谢你的帮助。 Mike是的,我需要了解有关ActiveWorkbook和脚本的更多信息。我会像你告诉我的那样尝试做,但我的工作完成了。谢谢