Excel VBA - ошибка нехватки памяти (время выполнения 7) - PullRequest
0 голосов
/ 23 июня 2010

Я получаю очень странную ошибку при использовании VBA в Excel. Я использую библиотеки 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 Гб оперативной памяти). И он всегда вылетает в одном ряду.

Я выполнил поиск и нашел одну соответствующую тему: Ошибка «Недостаточно памяти» в автоматизации Lotus Notes от VBA

Кто-нибудь видел что-то подобное раньше?

Ответы [ 3 ]

1 голос
/ 23 июня 2010

Если код постоянно терпит неудачу в одном и том же документе и в одном и том же столбце в представлении, это может привести меня к мысли, что с этим одним документом возникли проблемы с данными.Можете ли вы перехватить сообщение об ошибке и показать какой-то уникальный идентификатор для документа с ошибкой?Я попытался бы сделать это, а затем заглянуть в 35-й столбец представления для этого документа и проверить значение.Возможно, в столбце представления есть вычисление, которое возвращает @Error или аналогичный - и, в свою очередь, вызывает код VBA для исключения памяти.

0 голосов
/ 23 июня 2010

У меня была компания, установившая Excel 2007 на мой компьютер. Запустил отчет без проблем, так что я думаю, что это внутренняя ошибка 2003 года.

0 голосов
/ 23 июня 2010

Случайные вопросы:

  1. Какой тип данных является строкой? Если вы определили строку как двойную, она все еще падает?

  2. По ссылке, которую вы цитировали (спасибо, на самом деле. Это был мой пост), если вы определяете сессию как статическую переменную, она все равно падает?

  3. Даже если вы не делаете # 2, вы не забыли закрыть сеанс до конца функции?

  4. Это похоже на подмножество гораздо большей функции. Сколько раз он вызывается подряд?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...