Ошибка при CreateObject("Excel.Application")
, Ошибка Run-time error '7': Out of memory
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.43] |
|
|
Правила раздела Visual Basic: Общие вопросы
FAQ Сайта
FAQ Раздела
Кладовка
Наши Исходники
API-Guide
Поиск по Разделу
MSDN Library Online
Google
Ошибка при CreateObject("Excel.Application")
, Ошибка Run-time error '7': Out of memory
|
Сообщ.
#1
,
|
|
|
|
Здравствуйте!
Писал маленькую прогу для обновления файлов по ftp. Использовал для этого функции wininet.dll. Файлы для обновления должны были быть записаны в Excel. Тут и началась проблема - при создании объекта Excel появляется эта ошибка. ![]() ![]() Dim ExcelObj As Excel.Application Dim ExWorkbook As Excel.Workbook Dim ExSh As Excel.Worksheet Set ExcelObj = CreateObject("Excel.Application") Set ExWorkbook = ExcelObj.Workbooks.Open("C:\_Каталог\FTP\PutFiles.xlsm") ExcelObj.Visible = True Ошибка появляется на 4-й строчке - CreateObject("Excel.Application"). Кстати проверял и с Word - то же самое. Создавал пустой проект и получал ту же ошибку. Переустановил VB6, Office - все то же самое. Запустил на другом компе - все нормально работает... Помогите, пожалуйста, разобраться, уже 2-й день ломаю голову... Добавлено Да, еще важный момент: приложение Excel.exe запускается, его видно в диспетчере задач |
|
Сообщ.
#2
,
|
|
|
|
Цитата dec0rator @ Запустил на другом компе - все нормально работает... Более чем странно. Должно давать ошибку "Не выпрямлены руки у программиста". Нельзя для одного и того же экземпляра объекта смешивать раннее и позднее связывание. |
|
Сообщ.
#3
,
|
|
|
|
Цитата Akina @ Более чем странно. Должно давать ошибку "Не выпрямлены руки у программиста". Нельзя для одного и того же экземпляра объекта смешивать раннее и позднее связывание. Хотя я еще совсем начинающий программист, я понимаю что такое раннее и позднее связывание (или думаю что понимаю). Когда пишем ![]() ![]() Set ExcelObj = CreateObject("Excel.Application") ![]() ![]() Dim ExcelObj As Excel.Application Опять же если посмотреть тут: ![]() ![]() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.WorkSheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) Akina, объясните почему нельзя использовать CreateObject("Excel.Application") при раннем связывании? Теперь к проблеме: ![]() ![]() Dim ExcelObj As Object Set ExcelObj = CreateObject("Excel.Application") ExcelObj.Visible = True Дает у меня ошибку "Run-time error '424': Object required" на той же строчке... Добавлено Только что проверил, тот же код запускаю из VBA - все ОК. |
|
Сообщ.
#4
,
|
|
|
|
Цитата dec0rator @ почему нельзя использовать CreateObject("Excel.Application") при раннем связывании? Потому что при раннем связывании делают так: ![]() ![]() Dim xlApp As Excel.Application Set xlApp = New Excel.Application Это гарантирует, что созданный экземпляр объекта будет иметь ту же версию, что и использованная при сборке проекта референсная библиотека, а при отсутствии компонента требуемой версии приложение не запустится и вменяемо скажет, почему именно. А определение с ранним связыванием и последующая инициализация поздним - запросто могут вызвать проблему рассогласования версий в рантайме. Причём в отличие от чисто позднего связывания ошибка, если она возникнет, будет рассказывать о чём угодно, только не о том, почему она появилась. |
|
Сообщ.
#5
,
|
|
|
|
2Akina, спасибо за объяснения. Как вернусь домой посмотрю что мне напишет VB при раннем связывании
|
|
Сообщ.
#6
,
|
|
|
|
При раннем опять ошибка out of memory...есть идеи что делать...кроме как переустановить Windows?
Кстати операционка Win 7 X64 |
|
Сообщ.
#7
,
|
|
|
|
Только теперь ошибка появляется если сделать какую либо операцию с этим объектом, например здесь:
![]() ![]() Dim ExcelObj As Excel.Application Set ExcelObj = New Excel.Application Dim ExWorkbook As Excel.Workbook Set ExWorkbook = ExcelObj.Workbooks.Add ExcelObj.Visible = True на 4-й строчке |
|
Сообщ.
#8
,
|
|
|
|
В общем, есть подозрение. что не всё у тебя в системе благополучно. И на этом фоне вполне нормальный код выписывает кренделя.
Попробуй для начала полностью восстановить установку Офиса (а если в настройках там нет ничего критичного - можно вообще снести и переставить с нуля), а потом на этом компе поработать с минимальным приложением, использующим Эксель. |
|
Сообщ.
#9
,
|
|
|
|
Только что снес и поставил офис, все то же самое ((( Неужто систему переустанавливать? Может есть какие-нибудь идеи как поискать ошибку?
|
|
Сообщ.
#10
,
|
|
|
|
Получается, что у тебя на этом компе не (только) с офисом проблемы... на самом деле других вменяемых идей, кромее перестановки ОС, у меня лично не завалялось.
|
|
Сообщ.
#11
,
|
|
|
|
я думаю что не в офисе дело. Еще наблюдение: откомпилированная программа (тоже на vb6), которая всегда открывала Excel на этом компе теперь не работает. НО! Ведь этот же код из под VBA на этом компе работает!
Еще думаю, не может ли это быть как то связано с рекурсией, запускавшейся из под vb6? Может быть раздулся какой то файл или еще что? Правда эта ошибка возникает и в чистом проекте где только эти 5 строчек Добавлено Очень жду каких-нибудь идей от гуру) сносить ОС это в последнюю очередь...стоит много программ...а бэкап вовремя сделан не был( |
|
Сообщ.
#12
,
|
|
|
|
VB6 и VBA - это не просто две большие разницы...
|
|
Сообщ.
#13
,
|
|
|
|
Понимаю, но хочется за что то зацепиться...
|