На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Ошибка при CreateObject("Excel.Application") , Ошибка Run-time error '7': Out of memory
    Здравствуйте!
    Писал маленькую прогу для обновления файлов по ftp. Использовал для этого функции wininet.dll.
    Файлы для обновления должны были быть записаны в Excel.
    Тут и началась проблема - при создании объекта Excel появляется эта ошибка.
    ExpandedWrap disabled
          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 запускается, его видно в диспетчере задач
      Цитата dec0rator @
      Запустил на другом компе - все нормально работает...

      Более чем странно. Должно давать ошибку "Не выпрямлены руки у программиста".
      Нельзя для одного и того же экземпляра объекта смешивать раннее и позднее связывание.
        Цитата Akina @
        Более чем странно. Должно давать ошибку "Не выпрямлены руки у программиста".
        Нельзя для одного и того же экземпляра объекта смешивать раннее и позднее связывание.

        Хотя я еще совсем начинающий программист, я понимаю что такое раннее и позднее связывание (или думаю что понимаю).
        Когда пишем
        ExpandedWrap disabled
          Set ExcelObj = CreateObject("Excel.Application")
        при том что переменная изначально описана как ссылка именно на Excel:
        ExpandedWrap disabled
          Dim ExcelObj As Excel.Application
        - где тут ошибка?
        Опять же если посмотреть тут:
        ExpandedWrap disabled
          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") при раннем связывании?
        Теперь к проблеме:
        ExpandedWrap disabled
              Dim ExcelObj As Object
              Set ExcelObj = CreateObject("Excel.Application")
              ExcelObj.Visible = True

        Дает у меня ошибку "Run-time error '424': Object required" на той же строчке...

        Добавлено
        Только что проверил, тот же код запускаю из VBA - все ОК.
          Цитата dec0rator @
          почему нельзя использовать CreateObject("Excel.Application") при раннем связывании?

          Потому что при раннем связывании делают так:

          ExpandedWrap disabled
            Dim xlApp As Excel.Application
            Set xlApp = New Excel.Application


          Это гарантирует, что созданный экземпляр объекта будет иметь ту же версию, что и использованная при сборке проекта референсная библиотека, а при отсутствии компонента требуемой версии приложение не запустится и вменяемо скажет, почему именно.
          А определение с ранним связыванием и последующая инициализация поздним - запросто могут вызвать проблему рассогласования версий в рантайме. Причём в отличие от чисто позднего связывания ошибка, если она возникнет, будет рассказывать о чём угодно, только не о том, почему она появилась.
            2Akina, спасибо за объяснения. Как вернусь домой посмотрю что мне напишет VB при раннем связывании
              При раннем опять ошибка out of memory...есть идеи что делать...кроме как переустановить Windows?
              Кстати операционка Win 7 X64
                Только теперь ошибка появляется если сделать какую либо операцию с этим объектом, например здесь:
                ExpandedWrap disabled
                      Dim ExcelObj As Excel.Application
                      Set ExcelObj = New Excel.Application
                      Dim ExWorkbook As Excel.Workbook
                      Set ExWorkbook = ExcelObj.Workbooks.Add
                      ExcelObj.Visible = True

                на 4-й строчке
                  В общем, есть подозрение. что не всё у тебя в системе благополучно. И на этом фоне вполне нормальный код выписывает кренделя.
                  Попробуй для начала полностью восстановить установку Офиса (а если в настройках там нет ничего критичного - можно вообще снести и переставить с нуля), а потом на этом компе поработать с минимальным приложением, использующим Эксель.
                    Только что снес и поставил офис, все то же самое ((( Неужто систему переустанавливать? Может есть какие-нибудь идеи как поискать ошибку?
                      Получается, что у тебя на этом компе не (только) с офисом проблемы... на самом деле других вменяемых идей, кромее перестановки ОС, у меня лично не завалялось.
                        я думаю что не в офисе дело. Еще наблюдение: откомпилированная программа (тоже на vb6), которая всегда открывала Excel на этом компе теперь не работает. НО! Ведь этот же код из под VBA на этом компе работает!
                        Еще думаю, не может ли это быть как то связано с рекурсией, запускавшейся из под vb6? Может быть раздулся какой то файл или еще что?
                        Правда эта ошибка возникает и в чистом проекте где только эти 5 строчек

                        Добавлено
                        Очень жду каких-нибудь идей от гуру) сносить ОС это в последнюю очередь...стоит много программ...а бэкап вовремя сделан не был(
                          VB6 и VBA - это не просто две большие разницы...
                            Понимаю, но хочется за что то зацепиться...
                            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0951 ]   [ 15 queries used ]   [ Generated: 22.12.25, 17:54 GMT ]