在excel中使用VBA时,我遇到了一个非常奇怪的错误。我正在使用LotusNotes Automation库来遍历视图并将所有内容写入单元格。
这是我的代码(不感兴趣的变量被删除,因为我知道它们不会导致问题)
Public Function 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
结束功能
因此, ALWAYS 在行= 1425且列为35时失败。它给出“内存不足”(运行时7错误)。它不是硬件,因为系统非常稳定(双核,2 gig ram)。它总是在同一行崩溃。
我进行了搜索,找到了一个相关的帖子: "Out of Memory" error in Lotus Notes automation from VBA
以前有人见过这样的事吗?
答案 0 :(得分:1)
如果代码在视图中的同一文档和同一列上始终失败,那么这将使我相信该文档存在一些数据问题。您是否可以捕获错误并显示失败文档的一些唯一标识符?我会尝试这样做,然后查看该文档的视图的第35列并检查值。也许在view列中有一个返回@Error或类似的计算 - 然后导致VBA代码抛出内存异常。
答案 1 :(得分:0)
随机问题:
什么数据类型是行?如果将row定义为double,它是否仍会崩溃?
根据您引用的链接(实际上,谢谢。这是我的帖子),如果您将会话定义为静态变量,它是否仍会崩溃?
即使你没有做#2,你还记得在功能结束时关闭你的会话吗?
这看起来只是更大功能的一个子集。连续多次调用?
答案 2 :(得分:0)
我让公司在我的计算机上安装Excel 2007。完全没有问题地报告,所以我想它一定是2003年的内部错误。