Createobject excel application ошибка

Аннотация

При использовании в Microsoft Visual Basic оператора New или функции CreateObject для создания экземпляра приложения Microsoft Office может появиться приведенное ниже сообщение об ошибке.

Ошибка времени выполнения «429»: компоненту ActiveX не удается создать объект

Эта ошибка возникает, если com-модель компонента не может создать запрошенный объект службы автоматизации, и поэтому объект службы автоматизации недоступен для Visual Basic. Эта ошибка возникает не на всех компьютерах.

В этой статье описывается, как диагностировать и устранять распространенные проблемы, которые могут вызвать эту ошибку.

Дополнительная информация

В Visual Basic существует несколько причин ошибки 429. Ошибка возникает, если выполняется одно из следующих условий:

  • Наличие ошибки в приложении.

  • Наличие ошибки в конфигурации системы.

  • Отсутствие какого-либо компонента.

  • Наличие поврежденного компонента.

Чтобы найти причину возникновения ошибки, необходимо изолировать проблему. Если на клиентском компьютере появляется сообщение об ошибке «429», используйте следующие сведения, чтобы изолировать и устранить ошибку в приложениях Microsoft Office.

Примечание Некоторые из приведенных ниже сведений также могут применяться к COM-серверам, отличным от Office. Однако в данной статье предполагается, что ошибка связана с автоматизацией приложений Microsoft Office.

Проверка кода

Перед устранением ошибки попробуйте изолировать одну строку кода, которая может быть причиной проблемы.

Если вы обнаружите, что одна строка кода может вызвать проблему, выполните следующие процедуры:

  • Убедитесь, что код использует явное создание объекта.

    Проблемы легче выявить, если они сужаются до одного действия. Например, найдите неявное создание объекта, которое используется в качестве одного из следующих вариантов.

    Пример кода 1

    Application.Documents.Add 'DON'T USE THIS!!

    Пример кода 2

    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add

    В обоих примерах используется неявное создание объекта. Microsoft Office Word 2003 не запускается до первого вызова переменной. Поскольку код вызова переменной может быть расположен в различных частях программы, локализация проблемы может оказаться непростой задачей. Может быть трудно убедиться, что проблема вызвана при создании объекта Application или при создании объекта Document .

    Вместо этого можно выполнять явные вызовы для создания каждого объекта отдельно, как показано ниже.

    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add

    При использовании явных вызовов для создания каждого объекта по отдельности изолировать проблему легче. Это также может сделать код более удобным для чтения.

  • При создании экземпляра приложения Office используйте функцию CreateObject вместо оператора New.

    Функция CreateObject тесно сопоставляет процесс создания, используемый большинством клиентов Microsoft Visual C++. Функция CreateObject также позволяет изменять идентификатор CLSID сервера между версиями. Функцию CreateObject можно использовать с объектами с ранней привязкой и с объектами с поздним связыванием.

  • Убедитесь, что строка ProgID, передаваемая
    в CreateObject, правильна, а затем убедитесь, что строка ProgID не зависит от версии. Например, используйте строку «Excel.Application» вместо строки «Excel.Application.8». В системе, где возникает проблема, может быть установлена более старая или более новая версия Microsoft Office, отличная от версии, указанной в строке «ProgID».

  • Используйте команду Erl , чтобы сообщить номер строки кода, которая не завершается успешно. Это может облегчить отладку приложений, которые не запускаются в интегрированной среде разработки. Следующий код указывает, какой объект службы автоматизации нельзя создать (Microsoft Word или Microsoft Office Excel 2003):

    Dim oWord As Word.Application
     Dim oExcel As Excel.Application
     
     On Error Goto err_handler
     
     1: Set oWord = CreateObject("Word.Application")
     2: Set oExcel = CreateObject("Excel.Application")
     
     ' ... some other code
     
     err_handler:
       MsgBox "The code failed at line " & Erl, vbCritical

    Для отслеживания ошибки используйте функцию MsgBox и номер строки.

  • Используйте позднюю привязку следующим образом:

    Dim oWordApp As Object

    Для объектов с ранней привязкой необходимо, чтобы их настраиваемые интерфейсы были маршалированы через границы процессов. Если пользовательский интерфейс не может быть маршалирован во время CreateObject или Во время создания, вы получите сообщение об ошибке «429». Объект с поздней привязкой использует определенный системой интерфейс IDispatch, который не требует маршалирования настраиваемого прокси. Используйте объект с поздним связыванием, чтобы убедиться, что эта процедура работает правильно.

    Если проблема возникает только при ранней привязке объекта, проблема возникает в серверном приложении. Как правило, чтобы устранить проблему, достаточно переустановить приложение, как описано в разделе «Проверка сервера автоматизации» данной статьи.

Проверка сервера автоматизации

Наиболее распространенной причиной возникновения ошибки при использовании CreateObject или New является проблема, которая влияет на серверное приложение. Обычно причиной возникновения проблемы является установка или конфигурация приложения. Для устранения неполадок используйте следующие методы:

  • Убедитесь в том, что приложение Microsoft Office, которое необходимо автоматизировать, установлено на локальном компьютере. Убедитесь в возможности запуска приложения. Для этого нажмите кнопку Пуск, нажмите кнопку
    Выполнить, а затем попробуйте запустить приложение. Если приложение не запускается вручную, автоматизировать его нельзя.

  • Перерегистрируйте приложение описанным ниже образом.

    1. Нажмите кнопку Пуск, а затем — Выполнить.

    2. В диалоговом окне Выполнить введите путь к серверу и в конце строки добавьте параметр /RegServer.

    3. Нажмите кнопку ОК.

      Приложение выполняется автоматически. Приложение будет перерегистрировано как COM-сервер.

    Если причиной возникновения проблемы является отсутствие раздела реестра, в большинстве случаев выполнение перечисленных ниже действий приводит к устранению проблемы.

  • Проверьте раздел LocalServer32 в разделе CLSID приложения, которое необходимо автоматизировать. Убедитесь в том, что раздел LocalServer32 указывает на правильное местоположение приложения. Проверьте, чтобы путь был указан в кратком формате (DOS 8.3). Сервер не обязательно регистрировать с использованием краткого пути. Однако длинные пути, включающие пробелы, в некоторых системах могут являться причиной возникновения проблем.

    Чтобы изучить ключ пути, хранящийся для сервера, запустите редактор реестра Windows следующим образом:

    1. Нажмите кнопку Пуск, а затем — Выполнить.

    2. Введите regedit и нажмите кнопку ОК.

    3. Перейдите в раздел HKEY_CLASSES_ROOTCLSID.

      Идентификаторы CLSID для зарегистрированных серверов автоматизации в системе находятся под этим ключом.

    4. Чтобы найти раздел, представляющий приложение Microsoft Office, которое необходимо автоматизировать, используйте приведенные ниже значения раздела CLSID. Поверьте в разделе CLSID путь, указанный в разделе LocalServer32.

      Сервер Office

      Раздел CLSID

      Access.Application

      {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}

      Excel.Application

      {00024500-0000-0000-C000-000000000046}

      Outlook.Application

      {0006F03A-0000-0000-C000-000000000046}

      PowerPoint.Application

      {91493441-5A91-11CF-8700-00AA0060263B}

      Word.Application

      {000209FF-0000-0000-C000-000000000046}

    5. Проверьте путь, чтобы убедиться, что он соответствует фактическому расположению файла.

    Примечание. Краткие пути могут иногда казаться правильными ошибочно. Например, Office и Microsoft Internet Explorer (если они установлены в расположениях по умолчанию) имеют короткий путь, аналогичный C:PROGRA~1MICROS~X (где
    X — это число). Этот путь может сначала не показаться кратким путем.

    Чтобы определить, правильный ли путь, выполните следующие действия.

    1. Нажмите кнопку Пуск, а затем — Выполнить.

    2. Скопируйте значение из реестра и вставьте его в поле диалогового окна Выполнить.

      Примечание Перед запуском приложения удалите параметр /automation .

    3. Нажмите кнопку ОК.

    4. Проверьте правильность запуска приложения.

      Если приложение запускается после нажатия кнопки ОК, сервер зарегистрирован правильно. Если приложение не запускается после нажатия кнопки ОК, замените значение ключа LocalServer32 правильным путем. По возможности используйте краткий путь.

  • Проверьте шаблон Normal.dot или файл ресурсов Excel.xlb на предмет возможного повреждения. Проблемы при автоматизации Microsoft Word или Microsoft Excel могут возникать вследствие повреждения шаблона Normal.dot в Microsoft Word или файла ресурсов Excel.xlb в Microsoft Excel. Чтобы протестировать эти файлы, найдите на локальных жестких дисках все экземпляры Normal.dot или Excel.xlb.

    Примечание Вы можете найти несколько копий этих файлов. Для каждого профиля пользователя, установленного в системе, имеется одна копия каждого из этих файлов.

    Временно переименуйте файлы Normal.dot или Excel.xlb, а затем повторно запустите тест автоматизации. Если Microsoft Word и Microsoft Excel не находят эти файлы, они создают их снова. Убедитесь, что код работает. Если при создании нового файла Normal.dot код работает, удалите переименованные файлы. Эти файлы повреждены. Если код не работает, необходимо вернуть эти файлы в исходные имена файлов, чтобы сохранить все пользовательские параметры, сохраненные в этих файлах.

  • Запустите приложение под учетной записью администратора. Серверам Office требуется доступ на чтение и запись к реестру и диску. Серверы Office могут загружаться неправильно, если текущие параметры безопасности запрещают доступ на чтение и запись.

Проверка системы

Конфигурация системы также может вызвать проблемы при создании внепроцессных COM-серверов. Для устранения неполадок используйте следующие методы в системе, в которой произошла ошибка:

  • Определите, возникает ли проблема с каким-либо сервером вне процесса. Если у вас есть приложение, использующее определенный COM-сервер (например, Word), протестируйте другой внепроцессный сервер, чтобы убедиться, что проблема не возникает на самом уровне COM. Если вы не можете создать внепроцессный COM-сервер на компьютере, переустановите системные файлы OLE, как описано в разделе «Переустановка Microsoft Office» этой статьи, или переустановите операционную систему, чтобы устранить проблему.

  • Проверьте номера версий системных файлов OLE, которые управляют автоматизацией. Эти файлы обычно устанавливаются в наборе. Номера сборки этих файлов должны совпадать. Неправильно настроенная программа установки может по ошибке установить файлы отдельно. В этом случае файлы не будут сочетаться. Чтобы избежать проблем с автоматизацией, проверьте файлы, чтобы убедиться, что сборки файлов совпадают.

    Файлы автоматизации находятся в каталоге WindowsSystem32. Проверьте перечисленные ниже файлы.

    Имя файла

    Версия

    Дата изменения

    Asycfilt.dll

    10.0.16299.15

    29 сентября 2017 г.

    Ole32.dll

    10.0.16299.371

    29 марта 2018 г.

    Oleaut32.dll

    10.0.16299.431

    3 мая 2018 г.

    Olepro32.dll

    10.0.16299.15

    29 сентября 2017 г.

    Stdole2.tlb

    3.0.5014

    29 сентября 2017 г.

    Чтобы изучить версию файла, щелкните файл правой кнопкой мыши в проводнике и выберите пункт Свойства. Обратите внимание на последние четыре цифры версии файла (номер сборки) и дату последнего изменения файла. Убедитесь в том, что эти значения одинаковы для всех файлов автоматизации.

    Примечание Следующие файлы предназначены для Windows 10 версии 1709 сборки 16299.431. Эти числа и даты являются только примерами. Реальные значения могут быть иными.

  • Используйте служебную программу конфигурации системы (Msconfig.exe) для проверки служб и запуска системы на наличие сторонних приложений, которые могут ограничить выполнение кода в приложении

    OfficeПримечание. Отключите антивирусную программу только временно в тестовой системе, которая не подключена к сети.

    Кроме того, выполните следующие действия в Outlook, чтобы отключить сторонние надстройки:

    Если этот метод устраняет проблему, обратитесь к стороннему поставщику антивирусной программы для получения дополнительных сведений об обновлении антивирусной программы.

    1. В меню Файл выберите пункт Параметры, а затем — Надстройки.

    2. Щелкните Управление надстройками COM и нажмите кнопку Перейти.

      Примечание Откроется диалоговое окно надстройки COM.

    3. Снимите флажок для любой сторонней надстройки и нажмите кнопку ОК.

    4. Перезапустите Outlook.

Переустановка Microsoft Office

Если ни одна из предыдущих процедур не устраняет проблему, удалите и переустановите Office.

Дополнительные сведения см. в следующей статье Office:

Скачивание и установка или повторная установка Office 365 или Office 2016 на ПК или Mac

Ссылки

Дополнительные сведения об автоматизации Office и примерах кода см. на следующем веб-сайте Майкрософт:

Начало работы с разработкой Office

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Здесь обсуждаются вопросы по языку 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.

    >
    Ошибка при CreateObject(«Excel.Application»)
    , Ошибка Run-time error ‘7’: Out of memory

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    07.10.13, 20:01

      Здравствуйте!
      Писал маленькую прогу для обновления файлов по 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:_КаталогFTPPutFiles.xlsm»)

            ExcelObj.Visible = True

      Ошибка появляется на 4-й строчке — CreateObject(«Excel.Application»). Кстати проверял и с Word — то же самое. Создавал пустой проект и получал ту же ошибку. Переустановил VB6, Office — все то же самое.
      Запустил на другом компе — все нормально работает…
      Помогите, пожалуйста, разобраться, уже 2-й день ломаю голову…

      Добавлено 07.10.13, 20:11
      Да, еще важный момент: приложение Excel.exe запускается, его видно в диспетчере задач

      Monster

      Akina



      Сообщ.
      #2

      ,
      08.10.13, 04:39

        Цитата dec0rator @ 07.10.13, 20:01

        Запустил на другом компе — все нормально работает…

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


        dec0rator



        Сообщ.
        #3

        ,
        08.10.13, 18:04

          Цитата Akina @ 08.10.13, 04:39

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

          Хотя я еще совсем начинающий программист, я понимаю что такое раннее и позднее связывание (или думаю что понимаю).
          Когда пишем

          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» на той же строчке…

          Добавлено 08.10.13, 18:32
          Только что проверил, тот же код запускаю из VBA — все ОК.

          Monster

          Akina



          Сообщ.
          #4

          ,
          09.10.13, 10:27

            Цитата dec0rator @ 08.10.13, 18:04

            почему нельзя использовать CreateObject(«Excel.Application») при раннем связывании?

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

            ExpandedWrap disabled

              Dim xlApp As Excel.Application

              Set xlApp = New Excel.Application

            Это гарантирует, что созданный экземпляр объекта будет иметь ту же версию, что и использованная при сборке проекта референсная библиотека, а при отсутствии компонента требуемой версии приложение не запустится и вменяемо скажет, почему именно.
            А определение с ранним связыванием и последующая инициализация поздним — запросто могут вызвать проблему рассогласования версий в рантайме. Причём в отличие от чисто позднего связывания ошибка, если она возникнет, будет рассказывать о чём угодно, только не о том, почему она появилась.


            dec0rator



            Сообщ.
            #5

            ,
            09.10.13, 13:00

              2Akina, спасибо за объяснения. Как вернусь домой посмотрю что мне напишет VB при раннем связывании


              dec0rator



              Сообщ.
              #6

              ,
              09.10.13, 15:35

                При раннем опять ошибка out of memory…есть идеи что делать…кроме как переустановить Windows?
                Кстати операционка Win 7 X64


                dec0rator



                Сообщ.
                #7

                ,
                09.10.13, 16:17

                  Только теперь ошибка появляется если сделать какую либо операцию с этим объектом, например здесь:

                  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-й строчке

                  Monster

                  Akina



                  Сообщ.
                  #8

                  ,
                  09.10.13, 16:49

                    В общем, есть подозрение. что не всё у тебя в системе благополучно. И на этом фоне вполне нормальный код выписывает кренделя.
                    Попробуй для начала полностью восстановить установку Офиса (а если в настройках там нет ничего критичного — можно вообще снести и переставить с нуля), а потом на этом компе поработать с минимальным приложением, использующим Эксель.


                    dec0rator



                    Сообщ.
                    #9

                    ,
                    09.10.13, 17:31

                      Только что снес и поставил офис, все то же самое ((( Неужто систему переустанавливать? Может есть какие-нибудь идеи как поискать ошибку?

                      Monster

                      Akina



                      Сообщ.
                      #10

                      ,
                      09.10.13, 18:22

                        Получается, что у тебя на этом компе не (только) с офисом проблемы… на самом деле других вменяемых идей, кромее перестановки ОС, у меня лично не завалялось.


                        dec0rator



                        Сообщ.
                        #11

                        ,
                        09.10.13, 18:36

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

                          Добавлено 09.10.13, 18:38
                          Очень жду каких-нибудь идей от гуру) сносить ОС это в последнюю очередь…стоит много программ…а бэкап вовремя сделан не был(

                          Monster

                          Akina



                          Сообщ.
                          #12

                          ,
                          10.10.13, 04:36

                            VB6 и VBA — это не просто две большие разницы…


                            dec0rator



                            Сообщ.
                            #13

                            ,
                            10.10.13, 10:28

                              Понимаю, но хочется за что то зацепиться…

                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                              0 пользователей:

                              • Предыдущая тема
                              • Visual Basic: Общие вопросы
                              • Следующая тема

                              Рейтинг@Mail.ru

                              [ Script execution time: 0,0438 ]   [ 16 queries used ]   [ Generated: 3.06.23, 23:37 GMT ]  

                              RRS feed

                              • Remove From My Forums
                              • Question

                              • Hello,

                                Background: vbscript is located on windows server 2003, the client is on windows 7 with IE10 and Excel 2010. The asp page is calling the vbscript from windows 7 to open excel file on windows 7. (xls).

                                Issue: set app = CreateObject(«Excel.Application»)  is causing the problem as app is not set and the error is: Could not start Excel application.

                                Could I get a hint where to look at to attack this issue? Thx in advance

                                • Moved by
                                  George123345
                                  Wednesday, May 27, 2015 7:22 AM

                              All replies

                              • Hello,

                                Background: vbscript is located on windows server 2003, the client is on windows 7 with IE10 and Excel 2010. The asp page is calling the vbscript to open excel file on windows 7. (xls).

                                Issue: set app = CreateObject(«Excel.Application»)  is causing the problem as app is not set and the error is: Could not start Excel application.

                                Could I get a hint where to look at to attack this issue? Thx in advance

                                • Merged by
                                  L.Hl
                                  Saturday, May 23, 2015 3:48 PM
                                  repeat thread

                              • Re:  creating an excel.application

                                I wasn’t going to respond to your question, as it is out of my comfort range.
                                Since it has been a day and you have now posted on a second forum (frowned on), I’ll say this…

                                How is «app» declared?  It should be As Object or As Excel.Application.
                                Also, I think that in order to start  an Excel application on your server, you need Excel installed on the server.

                                This MS article might be of help…
                                «Considerations for server-side Automation of Office»
                                 https://support.microsoft.com/en-us/kb/257757/en-us?wa=wsignin1.0

                                ‘—

                                (free & commercial excel add-ins & workbooks)

                                • Edited by
                                  James Cone
                                  Tuesday, November 1, 2016 2:25 AM

                              • Dim app   — that’s how it is declared

                                If I use this declaration

                                Dim app as Excel.Application

                                then it doesn’t work at all.  That is the error message is not displayed, Excel not started. There is ‘on error resume next’ at the top of the function.

                                I am not trying to start an Excel application on the server, but on client machine running windows 7 and Excel 2010.

                                The server has Excel 2003 installed.

                              • Re:  CreateObject

                                Dim App  makes app a Variant, thats OK.
                                I can’t provide any further direction and am going to bow out.
                                I do suggest that you try your code in the client machine to eliminate that as the source of the problem.
                                ‘—
                                Jim Cone

                              • Hello mirekriek,

                                In my opinion, only create the object of Excel is not enough, should set the visible to true, and if you use VBScript (not VBA), about the DIM statement, please don’t write the part of «as type»,
                                so the code which can work properly on my laptop(Windows 7 64 bit) is :

                                Dim oExcel
                                Set oExcel = CreateObject(«Excel.Application»)
                                oExcel.Visible = True

                                Please take a shot and let us know whether the code works properly on your pc.

                                Best Regards,

                                Sniperhgy

                                • Edited by
                                  sniperhgy
                                  Wednesday, May 27, 2015 5:48 AM

                              • — top of vbs function

                                 on error resume next

                                 err.clear

                                 
                                 
                                 MsgBox «DisplayExcelFile «, vbOKOnly+vbCritical, «START»                —> this is displayed
                                 Dim app
                                 Set app = CreateObject(«Excel.Application»)

                                 
                                 app.visible = true

                                 
                                 MsgBox «DisplayExcelFile «, vbOKOnly+vbCritical, err.number             —> this displayed Error: 424 (object not set)

                                — end of block

                                The file with vbscript is not located on local windows 7, but on windows server 2003 server and it is triggered from asp page. If I run vbscript locally on windows 7 then it works, starts excel and opens worksheet.

                              Hi,

                              I am trying to open a password protected Excel 2010 file from within Access 2010. The file contains a list of passwords which I do not want the user to see in Access — so instead Access should open the file behind the scenes and extract the relevant password
                              data, without the user seeing what’s happening in the background.

                              I tried using ADODB.Connection to do this but realised that it will not work with a password protected file. I also tried importing the Excel sheet into a table using VBA but yet again the password creates a problem.

                              Instead, I’m now using CreateObject(«Excel.Application») which works but with 1 problem: Excel loads but comes up with a message saying it cannot find an XLA file which it is looking for (unsure why — seems to be related to the ribbon). The problem
                              is I don’t want the user to see or interact with Excel so any errors should just be bypassed by Excel and not displayed on the screen. I saw the idea of using
                              Application.Visible = False and Application.DisplayAlerts = False, but these can only be set after the object is created so they do not help.

                              Is there any way of supressing these error messages at the point when the Excel.Application object is created? Alternatively if anyone can suggest a better way of accessing a password protected Excel file, feel free!

                              Another alternative I tried was to use CreateObject(«Excel.Sheet«) instead. This got rid of the XLA error as it loads all add-ins. However, all the addin splash screens appear and while all the add-ins are loading, I get error
                              «Automation error. The message filter indicated that the application is busy«. I can’t seem to win!

                              Many thanks for your help!

                              As a background, I am trying to delete the 2nd row of my 2007 Excel work book. I dont have MS Office installed on the server and installing them is not a possibility. Using interop Assemblies is of no use since I cant install office.
                              When I tried using the VB script (below) to manipulate the file, it gives me all sorts of errors:

                              Dim filename As String
                              Dim appExcel As Object
                              Dim newBook As Object
                              Dim oSheet1 As Object
                              
                              appExcel = CreateObject("Excel.Application")
                              filename = "C:test.xls"
                              appExcel.DisplayAlerts = False
                              
                              newBook = appExcel.Workbooks.Open(filename)
                              oSheet1 = newBook.worksheets("Sheet1")
                              oSheet1.Range("A2").Entirerow.Delete()
                              
                              
                              newBook.SaveAs(filename, FileFormat:=56)
                              appExcel.Workbooks.Close()
                              appExcel.Quit()
                              

                              I kinda get it that without excel and assemblies, I cant manipulate the file. Is there any other way to achieve this? I dont know what assemblies I can try using. Thanks for reading.

                              Jaroslav Kadlec's user avatar

                              asked May 10, 2016 at 18:47

                              rvphx's user avatar

                              7

                              No, without the required Excel Objects library you can’t successfully delete rows from an Excel file* via a scripting language in this way.

                              You can query the workbook using ADO and SQL but this won’t allow you to delete rows.


                              *by Excel file, I mean an .xls file which is what you appear to be working with — .xlsx files (Excel 2007 and newer) are actually just compressed XML files and can be edited as such if you have the know-how

                              answered May 10, 2016 at 19:22

                              SierraOscar's user avatar

                              SierraOscarSierraOscar

                              17.5k6 gold badges40 silver badges68 bronze badges

                              3

                              Понравилась статья? Поделить с друзьями:
                            • Create package xml ошибка прекращена работа программы
                            • Create 2d texture ошибка call of duty ww2
                            • Crc32 не совпадает starline ошибка
                            • Crc ошибки сети
                            • Crc ошибки роутер