代码之家  ›  专栏  ›  技术社区  ›  masfenix

Excel VBA-内存不足错误(运行时7)

  •  0
  • masfenix  · 技术社区  · 16 年前

    我在excel中使用VBA时遇到了一个非常奇怪的错误。我正在使用LotusNotes自动化库来循环查看并将所有内容写入cell。

    公共函数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
    

    结束函数

    所以它 总是 当row=1425,column为35时失败。它给出“内存不足”(运行时7错误)。它不可能是硬件的事情,因为系统是非常稳定的(双核,2千兆内存)。它总是在同一排撞车。

    我搜索了一下,找到了一条相关的线索: "Out of Memory" error in Lotus Notes automation from VBA

    以前有人见过这样的东西吗?

    3 回复  |  直到 9 年前
        1
  •  1
  •   Ed Schembor    16 年前

        2
  •  0
  •   PowerUser    16 年前

    随机问题:

    1. 根据你引用的链接(实际上,谢谢。这是我的帖子),如果您将session定义为静态变量,它还会崩溃吗?

    2. 即使不执行#2,是否记得在函数结束时关闭会话?

        3
  •  0
  •   masfenix    16 年前