2010-06-23 148 views
0

在Excel中使用VBA時出現非常奇怪的錯誤。我正在使用LotusNotes Automation庫來遍歷視圖並將所有內容寫入單元格。Excel VBA - 內存不足錯誤(運行時7)

這裏是我的代碼(不計利息的變量被刪除,因爲我知道自己是不是造成問題的原因)

公共功能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吉ram)。它總是在同一行崩潰。

我做了搜索,我發現有一個相關主題: "Out of Memory" error in Lotus Notes automation from VBA

有沒有人見過這樣的事?

+0

我可能會後悔,但你能展示整個程序嗎? – PowerUser 2010-06-23 15:39:24

+0

這是整個代碼。除非你想看到定義的變量(即暗淡的語句) – masfenix 2010-06-23 17:46:23

+0

其實,是的。我希望變量定義以及Sub和End Sub行,以便我們可以看到哪些變量是內部和外部的。我寫這篇文章時沒有任何解決方案,但可能會有所幫助。 – PowerUser 2010-06-23 20:25:09

回答

0

我讓公司在我的電腦上安裝Excel 2007。根本沒有問題的報告,所以我想它一定是2003年的內部錯誤。

0

隨機問題:

  1. 什麼數據類型行?如果將行定義爲雙精度,它是否仍然會崩潰?

  2. 根據你引用的鏈接(感謝,其實是我的文章),如果你將會話定義爲一個靜態變量,它仍然會崩潰嗎?

  3. 即使你沒有做#2,你還記得在函數結束時關閉你的會話嗎?

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

+0

1)它是一個字符串。 2)它不是靜態的,但我會嘗試。 3)甚至不能達到該功能的結束。 4)它遍歷所有的文件,其中約6000。 – masfenix 2010-06-23 17:45:51

+0

我讓公司在我的電腦上安裝Excel 2007。根本沒有問題的報告,所以我想它一定是2003年的內部錯誤。 – masfenix 2010-06-23 19:16:58

1

如果代碼在視圖中的同一文檔和同一列上始終失敗,那會導致我認爲該文檔存在某些數據問題。你能捕獲錯誤並顯示失敗文檔的一些唯一標識符嗎?我會盡力做到這一點,然後查看該文檔視圖的第35列並檢查值。也許在視圖列中有一個返回@Error或類似的計算 - 並導致VBA代碼拋出內存異常。

+0

我讓公司在我的電腦上安裝Excel 2007。根本沒有問題的報告,所以我想它一定是2003年的內部錯誤。 – masfenix 2010-06-23 19:17:32

+0

埃德有一點。你能證實文件數據是有效的嗎? – PowerUser 2010-06-23 20:26:58