Excel Автоматизація не вдається виконати другий під час запуску коду


Причини


Під час виконання коду, який використовує автоматизації керування Microsoft Excel, один з таких помилок може виникнути.

У Microsoft Excel 97 та пізніших версіях Excel з'являється одне з таке повідомлення про помилку:
Повідомлення про помилку 1
Помилка виконання "1004"
Не вдалося виконати метод об'єкта '_Global' '< назва спосіб >'
Повідомлення про помилку 2
Помилка застосунку, визначені або певного об'єкта
У Microsoft Excel 95 з'являється одне з таких повідомлень про помилку:
Повідомлення про помилку 1
Помилка виконання "-2147023174"
OLE помилка автоматизації
Повідомлення про помилку 2
Помилка виконання "462"
Машина віддалений сервер не існує, або не доступна.

Причина


Visual Basic, було створено посилання Excel через рядок коду, який викликає об'єкт Excel, спосіб або власності, без кваліфікації елемента з Excel об'єктної змінної. Visual Basic не звільняє цієї, до завершення програми. Це мандрівний посилання конфліктує з коду для автоматизації, під час запуску коду більше одного разу.

Вирішення


Щоб вирішити цю проблему, можна змінити код таким чином, що кожен виклик на об'єкт Excel, метод або властивість, кваліфікований зі змінною для відповідного об'єкта.

Стан


Така поведінка передбачена.

Додаткові відомості


Автоматизація Microsoft Excel, встановлення змінна об'єкта, які зазвичай відноситься до об'єкта Excel. Application "або" книгу Excel об'єкта. Інші змінні, об'єкт може бути встановлений звернутися до аркуша, діапазон або інших об'єктів у програмі Microsoft Excel об'єктної моделі. Під час написання, код, щоб використовувати в Excel об'єкта, метод або властивість, ви повинні завжди перед виклик зі змінною для відповідного об'єкта. Якщо ви не встановлює Visual Basic, власні посилання Excel. Це посилання, може спричинити неполадки під час запуску коду для автоматизації, кілька разів. Зверніть увагу, що навіть, якщо змінна об'єкта починається з рядок коду, виклику може бути об'єкт Excel, метод або властивість, в центрі рядка коду, який не введено об'єктної змінної.

Як відтворити цю проблему а також способи виправлення неполадок, що наведені нижче дії.

Відтворення проблеми

  1. У Visual Basic, запустіть проект Standard EXE. Форма Form1 створюється за промовчанням.
  2. У меню проекту клацніть посиланнята перевірте версії Excel, що ви маєте намір автоматизації, бібліотека об'єктів.
  3. Місце на Form1 елемент керування CommandButton .
  4. Скопіюйте у наступному прикладі до вікна Form1 об'єкт код.
          Option Explicit

    Private Sub Command1_Click()
    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("Sheet1")
    xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
    xlBook.Saved = True
    Set xlSheet = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing
    End Sub
  5. У меню Запуск меню Пускабо натиснути клавішу F5, щоб запустити програму.
  6. Клацніть елемент керування CommandButton . Помилка немає. Однак посилання Excel було створено і не було випущено.
  7. Клацніть елемент керування CommandButton . Зверніть увагу, що ви отримаєте повідомлення про помилку, які розглядаються в розділі "Ознаки".

    Примітка. Повідомлення про помилку, виникає через те, що код відповідає методу клітинки без попереднього дзвінок з на
    Змінна об'єкта з xlSheet .
  8. Зупиніть проекту та змініть такий рядок коду:
    xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
    Зміна рядка коду нагадувати такий рядок коду.
    xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
  9. Запустіть програму. Зверніть увагу, що ви можете запустити код кілька разів не отримуючи повідомлення про помилку.

Посилання


Щоб отримати додаткові відомості клацніть номер статті в базі знань Microsoft Knowledge Base:

167223 Microsoft Office 97 автоматизації довідці доступні

189618 може з'явитися повідомлення про помилку "помилка виконання"-2147023174"(800706ba)" або "виконання помилку"462"" для виконання коду Visual Basic, який використовує автоматизації керування Microsoft Word