簡體   English   中英

Excel VBA-內存不足錯誤(運行時7)

[英]Excel VBA - out of memory error (runtime 7)

在Excel中使用VBA時出現一個非常奇怪的錯誤。 我正在使用LotusNotes Automation庫遍歷視圖並將所有內容寫入單元格。

這是我的代碼(非利息變量已刪除,因為我知道它們不會引起問題)

公共函數TimeCh()

Set session = New NotesSession 'create a new session (ask for user/pass)
session.Initialize             'initialize the session (allow login)
Set db = session.GetDatabase("HIDDEN") 'Grab the DB
Set view = db.GetView("HIDDEN") 'Get the view




Application.ScreenUpdating = False


'start the loop to go through data
While Not (entry Is Nothing)
    Cells(row, 1) = (entry.ColumnValues(4))
    Cells(row, 2) = (entry.ColumnValues(0))
    Cells(row, 3) = (entry.ColumnValues(26))
    Cells(row, 4) = (entry.ColumnValues(27))
    Cells(row, 5) = (entry.ColumnValues(22))
    Cells(row, 6) = (entry.ColumnValues(20))
    Cells(row, 7) = (entry.ColumnValues(29))
    Cells(row, 8) = (entry.ColumnValues(31))
    Cells(row, 9) = (entry.ColumnValues(30))
    Cells(row, 10) = (entry.ColumnValues(8))
    Cells(row, 11) = (entry.ColumnValues(7))
    Cells(row, 12) = (entry.ColumnValues(21))
    Cells(row, 13) = (entry.ColumnValues(19))
    Cells(row, 14) = (entry.ColumnValues(24))
    Cells(row, 15) = (entry.ColumnValues(25))
    Cells(row, 16) = (entry.ColumnValues(32))
    Cells(row, 17) = (entry.ColumnValues(28))
    Cells(row, 18) = (entry.ColumnValues(9))
    Cells(row, 19) = (entry.ColumnValues(12))
    Cells(row, 20) = (entry.ColumnValues(11))
    Cells(row, 21) = (entry.ColumnValues(23))
    Cells(row, 22) = (entry.ColumnValues(10))
    Cells(row, 23) = (entry.ColumnValues(2))
    Cells(row, 24) = (entry.ColumnValues(33))
    Cells(row, 25) = (entry.ColumnValues(1))
    Cells(row, 26) = (entry.ColumnValues(13))
    Cells(row, 27) = (entry.ColumnValues(5))
    Cells(row, 28) = (entry.ColumnValues(14))
    Cells(row, 29) = (entry.ColumnValues(6))
    Cells(row, 30) = (entry.ColumnValues(18))
    Cells(row, 31) = (entry.ColumnValues(16))
    Cells(row, 32) = (entry.ColumnValues(3))
    Cells(row, 33) = (entry.ColumnValues(15))
    Cells(row, 34) = (entry.ColumnValues(17))
    Cells(row, 35) = (entry.ColumnValues(34))
    row = row + 1
    Set entry = vec.GetNextEntry(entry)
Wend
Application.ScreenUpdating = True

結束功能

因此,當行= 1425並且列為35時,它總是會失敗。它給出了“內存不足”(運行時7錯誤)。 它不能是硬件,因為系統非常穩定(雙核,2 gig ram)。 而且它總是在同一行崩潰。

我進行了搜索,發現一個相關的線程: VBA中的Lotus Notes自動化出現“內存不足”錯誤

有人看過類似的東西嗎?

如果代碼在同一文檔和視圖中的同一列上始終失敗,那會讓我相信該文檔存在數據問題。 您可以捕獲錯誤並為失敗的文檔顯示一些唯一的標識符嗎? 我會嘗試這樣做,然后在該文檔的視圖的第35列中查找並檢查該值。 可能在view列中有一個計算,該計算返回@Error或類似內容-進而導致VBA代碼引發內存異常。

隨機問題:

  1. 行是什么數據類型? 如果將row定義為double,它是否還會崩潰?

  2. 根據您引用的鏈接(實際上,這是我的帖子),如果您將會話定義為靜態變量,它是否仍然崩潰?

  3. 即使您沒有執行#2,您是否還記得在函數結束時關閉會話?

  4. 這看起來只是更大功能的一個子集。 連續調用幾次?

我讓公司在計算機上安裝Excel 2007。 毫無問題地運行報告,所以我想它一定是2003年內部錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM