1

Excel2003 では、ワークブックのリストを自動的に変更するために作成したマクロで奇妙なことが起こっています。変更する 12000 のワークブックのリストがあるので、それぞれを順番に開き、内部で作業を行ってから保存して閉じる必要があります。約 1000 のワークブック (場合によっては数百以上) が処理されると、Excel がクラッシュします。

ここに私がやっていることの疑似コードがあります

public sub ProcessWorkbooks()

    dim i as Integer
    dim targetWorkbook as Workbook

    With thisWorkbook.Sheets("Main").Range("A15")
        Do While .Offset(i, 0).Value <> ""
            set targetWorkbook = Application.Workbooks.Open(.Offset(i, 3).Value)
            If targetWorkbook Is Nothing Then
                Goto NextIteration
            End If
            Application.ScreenUpdating = False
            Call ProcessWorkbook(targetWorkbook)
            Call targetWorkbook.Save
            DoEvents
            Call targetWorkbook.Close
            Application.ScreenUpdating = True
NextIteration:
            i = i + 1
        Loop
    End With

end sub

私が最初に考えたのはメモリ リークでしたが、クラッシュする前に Excel が非常に遅くなるはずだと思いますが、実行速度はクラッシュするまで同じままです (私はそこに座って数千のワークブックを調べたわけではありませんが.. .)。Excel 自体に、この種のクラッシュを引き起こす可能性のあるものはありますか? たぶん、歴史を一掃する必要がありますか?誰もこれが以前に起こったことがありますか?

4

0 に答える 0