Podczas automatyzowania aplikacji pakietu Office pojawia się błąd czasu wykonania 429

Dotyczy: Office 2016Office 2013

Podsumowanie


Podczas tworzenia wystąpienia aplikacji pakietu Microsoft Office za pomocą operatora New lub funkcji CreateObject w języku Microsoft Visual Basic może zostać wyświetlony następujący komunikat o błędzie:
Błąd wykonania "429": składnik ActiveX nie może utworzyć obiektu
Ten błąd występuje, gdy model COM (Component Object Model) nie może utworzyć żądanego obiektu automatyzacji , a obiekt automatyzacji jest niedostępny w języku Visual Basic. Ten błąd nie występuje na wszystkich komputerach.W tym artykule opisano sposób diagnozowania i rozwiązywania typowych problemów, które mogą powodować występowanie tego błędu.

Więcej informacji


W języku Visual Basic istnieje kilka przyczyn błędu 429. Ten błąd występuje, jeśli jest spełniony dowolny z następujących warunków: 
  • W aplikacji wystąpił błąd.
  • W konfiguracji systemu Wystąpił błąd.
  • Brakuje składnika.
  • Składnik jest uszkodzony.
Aby znaleźć przyczynę błędu, odizoluj problem. Jeśli zostanie wyświetlony komunikat o błędzie "429" na komputerze klienckim, Użyj poniższych informacji, aby wyodrębnić i rozwiązać błąd w aplikacjach pakietu Microsoft Office.Uwaga Niektóre z poniższych informacji mogą dotyczyć również serwerów COM nienależących do pakietu Office. Jednak w tym artykule przyjęto założenie, że chcesz zautomatyzować aplikacje pakietu Office.

Zbadanie kodu

Przed rozpoczęciem rozwiązywania problemu spróbuj odizolować jeden wiersz kodu, który może powodować problem.Jeśli okaże się, że przyczyną problemu może być pojedynczy wiersz kodu, wykonaj następujące czynności: 
  • Upewnij się, że kod używa jawnego tworzenia obiektu. Problemy są łatwiejsze do zidentyfikowania, jeśli są one zawężane do jednej akcji. Na przykład poszukaj niejawnego sposobu tworzenia obiektu, który jest wykorzystywany jako jedna z poniższych opcji. Przykład kodu 1
    Application.Documents.Add 'DON'T USE THIS!!
    Przykładowy kod 2
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!'... some other codeoWordApp.Documents.Add
    W obu przykładach kodu są stosowane niejawne Tworzenie obiektów. Program Microsoft Office Word 2003 nie rozpoczyna się, dopóki zmienna nie zostanie wywołana co najmniej jeden raz. Zmienna może być wywoływana w różnych częściach programu, więc problem może być trudny do odnalezienia. Sprawdzenie, czy problem jest spowodowany podczas tworzenia obiektu aplikacji lub tworzenia obiektu dokumentu , może być trudne. Zamiast tego możesz nawiązywać wyraźne rozmowy, aby poszczególne obiekty były tworzone oddzielnie, w następujący sposób.
    Dim oWordApp As Word.ApplicationDim oDoc As Word.DocumentSet oWordApp = CreateObject("Word.Application")'... some other codeSet oDoc = oWordApp.Documents.Add
    Podczas nawiązywania połączeń jednoznacznych w celu osobnego utworzenia każdego obiektu problem jest łatwiejszy do wyodrębnienia. Może to też ułatwić czytanie kodu.
  • Użyj funkcji CreateObject zamiast nowego operatora podczas tworzenia wystąpienia aplikacji pakietu Office. Funkcja CreateObject dokładnie odwzorowuje proces tworzenia, który jest używany przez większość klientów Microsoft Visual C++. Funkcja CreateObjectumożliwia również Zmienianie identyfikatora CLSID serwera między wersjami. Funkcji CreateObjectmożna używać z obiektami z wczesnym wiązaniem, a obiekty z późnym wiązaniem.
  • Sprawdź, czy ciąg "ProgID" przekazany do Wartość CreateObject jest poprawna, a następnie sprawdź, czy ciąg "ProgID" jest niezależny od wersji. Na przykład użyj ciągu "Excel. Application" zamiast ciągu "Excel. Application. 8". System nie może mieć starszej wersji pakietu Microsoft Office lub nowszej wersji pakietu Microsoft Office niż wersja określona w ciągu "ProgID".
  • Użyj polecenia ERL , aby zgłosić numer wiersza kodu, którego nie można zakończyć. Może to ułatwić debugowanie aplikacji, które nie działają w IDE. Poniższy kod informuje, którego obiektu automatyzacji nie można utworzyć (Microsoft Word lub 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
    Użyj funkcji OknoKomunikatu oraz numeru wiersza, aby śledzić błąd.
  • Z późnym wiązaniem należy korzystać w następujący sposób:
    Dim oWordApp As Object
    Obiekty z wczesnym powiązaniem wymagają, aby ich interfejsy niestandardowe były organizowane w różnych granicach procesów. Jeśli interfejsu niestandardowego nie można zorganizować podczas wykonywania metody CreateObject lub Nowy, jest wyświetlany komunikat o błędzie "429". Obiekt z późnym wiązaniem używa interfejsu użytkownika IDispatch, który nie wymaga organizowania niestandardowego serwera proxy. Użyj obiektu z późnym wiązaniem, aby sprawdzić, czy ta procedura działa poprawnie. Jeśli problem występuje tylko wtedy, gdy obiekt jest wczesnie powiązany, problem występuje w aplikacji serwera. Zazwyczaj możesz ponownie zainstalować aplikację, postępując zgodnie z opisem w sekcji "zbadaj serwer automatyzacji" w tym artykule, aby rozwiązać ten problem.

Sprawdzanie serwera automatyzacji

Najczęstszym powodem błędu podczas korzystania z metody CreateObject lub Nowy jest problem, który wpływa na aplikację serwera. Zazwyczaj przyczyną problemu jest konfiguracja aplikacji lub Konfiguracja aplikacji. Aby rozwiązać ten problem, użyj następujących metod:

  • Sprawdź, czy aplikacja pakietu Office, którą chcesz zautomatyzować, jest zainstalowana na komputerze lokalnym. Upewnij się, że możesz uruchomić aplikację. W tym celu kliknij przycisk Start, kliknij polecenie Uruchomaplikację, a następnie spróbuj uruchomić ją. Jeśli nie można uruchomić aplikacji ręcznie, aplikacja nie będzie działać za pośrednictwem automatyzacji.
  • Zarejestruj ponownie aplikację w następujący sposób:  
    1. Kliknij przycisk Start, a następnie kliknij polecenie Uruchom.
    2. W oknie dialogowym Uruchamianie wpisz ścieżkę serwera, a następnie Dołącz polecenie /regserver do końca wiersza.
    3. Kliknij przycisk OK. Aplikacja zostanie uruchomiona w sposób cichy. Aplikacja jest ponownie rejestrowana jako serwer COM.
    Jeśli ten problem występuje, ponieważ brakuje klucza rejestru, te kroki zwykle rozwiązuje problem.
  • Sprawdź klucz LocalServer32 pod identyfikatorem CLSID aplikacji, którą chcesz zautomatyzować. Upewnij się, że klucz LocalServer32 wskazuje prawidłową lokalizację aplikacji. Upewnij się, że nazwa ścieżki jest w formacie krótkiej ścieżki (DOS 8,3). Nie trzeba rejestrować serwera przy użyciu krótkiej nazwy ścieżki. Jednak długie nazwy ścieżek, które zawierają osadzone spacje, mogą powodować problemy w niektórych systemach. Aby sprawdzić klucz ścieżki przechowywany na serwerze, uruchom Edytor rejestru systemu Windows w następujący sposób:  
    1. Kliknij przycisk Start, a następnie kliknij polecenie Uruchom.
    2. Wpisz ciąg regedit, a następnie kliknij przycisk OK.
    3. Przechodzenie do HKEY_CLASSES_ROOT klucz \CLSID. Identyfikatory CLSID zarejestrowanych serwerów automatyzacji w systemie są pod tym kluczem.
    4. Użyj następujących wartości klucza CLSID, aby znaleźć klucz reprezentujący aplikację pakietu Office, którą chcesz zautomatyzować. Sprawdź klucz LocalServer32 klucza CLSID ścieżki.  
      Serwer pakietu Office Klucz 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. Sprawdź ścieżkę, aby upewnić się, że jest zgodna z rzeczywistą lokalizacją pliku.
    Uwaga W przypadku nieprawidłowych nazw krótkich ścieżek mogą wydawać się niepoprawne. Na przykład zarówno pakiet Office, jak i program Microsoft Internet Explorer (jeśli są zainstalowane w ich lokalizacjach domyślnych) mają krótką ścieżkę podobną do C:\PROGRA ~ 1 \ MICROS ~X\ (gdzie X to liczba). Ta nazwa może być początkowo niewidoczna na krótkiej nazwie ścieżki. Aby sprawdzić, czy ścieżka jest poprawie, wykonaj następujące czynności:  
    1. Kliknij przycisk Start, a następnie kliknij polecenie Uruchom.
    2. Skopiuj wartość z rejestru, a następnie wklej wartość w oknie dialogowym Uruchamianie . Uwaga Usuń przełącznik /Automation , zanim uruchomisz aplikację.
    3. Kliknij przycisk OK.
    4. Sprawdź, czy aplikacja działa poprawnie. Jeśli aplikacja zostanie uruchomiona po kliknięciu przycisku OK, serwer jest poprawnie zarejestrowany. Jeśli aplikacja nie uruchamia się po kliknięciu przycisku OK, Zamień wartość klucza LocalServer32 na właściwą ścieżkę. Jeśli jest to możliwe, użyj krótkiej nazwy ścieżki.
  • Przetestuj możliwość uszkodzenia szablonu Normal. dot lub pliku zasobów programu Excel. xlb. Podczas automatyzowania programu Microsoft Word lub programu Microsoft Excel mogą wystąpić problemy, jeśli szablon Normal. dot w programie Word lub plik zasobów programu Excel. xlb w programie Excel jest uszkodzony. Aby przetestować te pliki, Wyszukaj na lokalnym dysku twardym wszystkie wystąpienia plików Normal. dot lub Excel. xlb. Uwaga Możesz znaleźć wiele kopii tych plików. Dla każdego profilu użytkownika zainstalowanego w systemie istnieje jedna kopia każdego z tych plików. Tymczasowo Zmień nazwy zwykłych plików dot lub plików programu Excel. xlb, a następnie ponownie uruchom test automatyzacji. Programy Word i Excel tworzą te pliki, jeśli nie mogą ich znaleźć. Sprawdź, czy kod działa. Jeśli kod działa po utworzeniu nowego pliku Normal. dot, Usuń pliki, których nazwy zostały zmienione. Te pliki są uszkodzone. Jeśli kod nie działa, należy przywrócić te pliki do ich oryginalnych nazw plików, aby zapisać ustawienia niestandardowe zapisane w tych plikach.
  • Uruchom aplikację za pomocą konta administratora. Serwery pakietu Office wymagają dostępu do rejestru i do dysku w trybie odczytu/zapisu. Serwery pakietu Office mogą nie być ładowane poprawnie, jeśli bieżące ustawienia zabezpieczeń nie zezwalają na dostęp do odczytu/zapisu.

Sprawdzanie systemu

Konfiguracja systemu może również powodować problemy z tworzeniem pozaprocesowych serwerów COM. Aby rozwiązać ten problem, użyj następujących metod w systemie, w którym występuje błąd:

  • Ustal, czy problem występuje na serwerze pozaprocesowych. Jeśli masz aplikację korzystającą z określonego serwera COM (na przykład programu Word), przetestuj inny serwer pozaprocesowe, aby upewnić się, że problem nie występuje w samej warstwie COM. Jeśli nie możesz utworzyć pozaprocesowe serwera COM na komputerze, ponownie zainstaluj pliki systemowe OLE zgodnie z opisem w sekcji "Instalowanie ponowne pakietu Microsoft Office" w tym artykule lub ponownie zainstaluj system operacyjny, aby rozwiązać ten problem.
  • Sprawdź numery wersji plików systemowych OLE, które zarządzają automatyzacją. Te pliki są zwykle instalowane jako zestaw. Te pliki muszą odpowiadać numerom kompilacji. Niepoprawnie skonfigurowany program instalacyjny może błędnie zainstalować pliki osobno. Spowoduje to, że pliki będą niezgodne. Aby uniknąć problemów w automatyzacji, sprawdź pliki, aby upewnić się, że kompilacja plików jest zgodna. Pliki automatyzacji znajdują się w katalogu Windows\System32. Sprawdź poniższe pliki.  
    Nazwa pliku Wersja Data modyfikacji
    Asycfilt.dll 10.0.16299.15 29 września 2017 r.
    Ole32.dll 10.0.16299.371 29 marca 2018 r.
    Oleaut32.dll 10.0.16299.431 3 maja 2018 r.
    Olepro32.dll 10.0.16299.15 29 września 2017 r.
    Stdole2.tlb 3.0.5014 29 września 2017 r.
    Aby sprawdzić wersję pliku, kliknij prawym przyciskiem myszy plik w Eksploratorze Windows, a następnie kliknij polecenie Właściwości. Zwróć uwagę na ostatnie cztery cyfry wersji pliku (numeru kompilacji) oraz datę ostatniej modyfikacji pliku. Upewnij się, że te wartości są takie same dla wszystkich plików automatyzacji. Uwaga Poniższe pliki dotyczą systemu Windows 10 w wersji 1709, kompilacja 16299,431. Te liczby i daty są tylko przykładami. Wartości mogą się różnić.  
  • Użyj narzędzia konfiguracji systemu (Msconfig. exe), aby sprawdzić działanie usług i uruchamiania systemu dla aplikacji innych firm, które mogą ograniczać uruchamianie kodu w aplikacji pakietu Office. Aby uzyskać więcej informacji o narzędziu Msconfig. exe, zobacz następujący artykuł z bazy wiedzy Microsoft Knowledge Base:
    181966 Zaawansowane ustawienia rozwiązywania problemów z narzędziem konfiguracji systemu
    Na przykład aplikacje automatyzacji programu Outlook mogą kończyć się niepowodzeniem, ponieważ korzystasz z programu antywirusowego, który ma funkcję "Script Blocker". Uwaga Wyłącz program antywirusowy tylko tymczasowo w systemie testowym, który nie jest połączony z siecią. Możesz również wykonać następujące czynności w programie Outlook, aby wyłączyć dodatki innych firm: Jeśli ta metoda rozwiązała problem, skontaktuj się z dostawcą oprogramowania antywirusowego innej firmy, aby uzyskać więcej informacji na temat aktualizacji programu antywirusowego.  
    1. W menu plik kliknij polecenie Opcje, a następnie kliknij pozycję Dodatki.
    2. Kliknij pozycję Zarządzaj dodatkami com, a następnie kliknij pozycję Przejdź. Uwaga Zostanie otwarte okno dialogowe Dodatki COM .
    3. Wyczyść pole wyboru dla każdego dodatku innych firm, a następnie kliknij przycisk OK.
    4. Uruchom ponownie program Outlook.

Ponowne instalowanie pakietu Office

Jeśli żadna z powyższych procedur nie rozwiązała problemu, Usuń, a następnie ponownie zainstaluj pakiet Office.

Aby uzyskać więcej informacji, zobacz następujący artykułpakietu Office:

Informacje


Aby uzyskać więcej informacji na temat automatyzacji pakietu Office i przykładów kodu, odwiedź następującą witrynę firmy Microsoft w sieci Web: