Tóm tắt

Khi bạn sử dụng điều khiển mới hoặc chức năng CreateObject trong Microsoft Visual Basic để tạo ra một phiên bản của một ứng dụng Microsoft Office, bạn có thể nhận được thông báo lỗi sau:

Thời gian chạy lỗi '429': cấu phần ActiveX không thể tạo đối tượng

Lỗi này xảy ra khi mô hình đối tượng thành phần (COM) không thể tạo đối tượng tự động yêu cầu đối tượng tự động không, do đó, Visual Basic. Lỗi này xảy ra trên tất cả các máy tính. Bài viết này mô tả làm thế nào để chẩn đoán và khắc phục sự cố phổ biến có thể gây ra lỗi này.

Thông tin Bổ sung

Trong Visual Basic, có nhiều nguyên nhân của lỗi 429. Lỗi xảy ra nếu các điều kiện sau là đúng:

  • Có một lỗi trong ứng dụng.

  • Có một lỗi trong cấu hình hệ thống.

  • Đó là một cấu phần thiếu.

  • Đó là một phần bị hỏng.

Để tìm nguyên nhân của lỗi, cách ly sự cố. Nếu bạn nhận được thông báo lỗi "429" trên máy khách, sử dụng thông tin sau để cách ly và sửa lỗi trong ứng dụng Microsoft Office. Lưu ý Một số thông tin sau cũng có thể áp dụng cho máy chủ không phải văn phòng COM. Tuy nhiên, bài viết này giả định rằng bạn muốn tự động các ứng dụng Office.

Kiểm tra mã

Trước khi bạn khắc phục lỗi, hãy thử cách ly một dòng mã có thể gây ra sự cố. Nếu bạn thấy một dòng mã có thể gây ra sự cố, hoàn tất các quy trình này:

  • Đảm bảo rằng mã sử dụng rõ ràng đối tượng tạo. Vấn đề là dễ dàng hơn để xác định được thu hẹp xuống một hành động đơn lẻ. Ví dụ, tìm kiếm tiềm ẩn đối tượng tạo được sử dụng một trong các bước sau. Mã mẫu 1

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

    Mã mẫu 2

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

    Cả các mẫu mã sử dụng tiềm ẩn đối tượng tạo. Microsoft Office Word 2003 không khởi động cho đến khi biến được gọi là ít nhất một lần. Vì biến có tên của chương trình, sự cố có thể khó xác định. Có thể khó khăn để xác minh rằng sự cố gây ra khi đối tượng ứng dụng được tạo ra hoặc khi đối tượng tài liệu được tạo ra. Thay vào đó, bạn có thể gọi rõ ràng để tạo từng đối tượng riêng biệt, như sau.

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

    Khi bạn thực hiện cuộc gọi rõ ràng để tạo từng đối tượng riêng, sự cố dễ dàng hơn để cách ly. Điều này cũng có thể làm cho mã dễ đọc hơn.

  • Sử dụng hàm CreateObject thay vì điều khiển mới khi bạn tạo một phiên bản ứng dụng Office. Chức năng CreateObject chặt chẽ bản đồ quá trình tạo hầu hết các khách hàng Microsoft Visual C++ sử dụng. CreateObjectchức năng cũng cho phép thay đổi trong CLSID của máy chủ giữa các phiên bản. Bạn có thể sử dụng CreateObjectchức năng đối tượng vào đầu và cuối vào đối tượng.

  • Kiểm tra xem chuỗi "ProgID" được chuyển đến CreateObject chính xác, và sau đó kiểm tra xem chuỗi "ProgID" là phiên bản độc lập. Ví dụ: sử dụng chuỗi "Excel.Application" thay vì sử dụng chuỗi "Excel.Application.8". Hệ thống mà không có một phiên bản Microsoft Office hoặc phiên bản Microsoft Office mới hơn phiên bản mà bạn đã chỉ định trong chuỗi "ProgID".

  • Sử dụng lệnh Erl báo cáo số dòng dòng mã không thành công. Điều này có thể giúp bạn gỡ lỗi các ứng dụng không thể chạy trong IDE. Mã sau đây cho bạn không thể tạo được đối tượng tự động (Microsoft Word hoặc 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

    Sử dụng chức năng MsgBox và số dòng để theo dõi lỗi.

  • Sử dụng liên kết đến như sau:

    Dim oWordApp As Object

    Đối tượng đầu vào yêu cầu của giao diện tuỳ chỉnh được marshaled trên trình biên giới. Nếu giao diện tùy chỉnh không thể được marshaled trong CreateObject hoặc trong quá trình mới, bạn nhận được thông báo lỗi "429". Đối tượng vào cuối sử dụng IDispatch hệ thống định nghĩa giao diện không yêu cầu proxy tuỳ chỉnh để được marshaled. Sử dụng một đối tượng vào cuối để xác minh rằng quy trình này hoạt động đúng cách. Nếu sự cố xảy ra khi các đối tượng là đầu vào, vấn đề là ứng dụng máy chủ. Thông thường, bạn có thể cài đặt ứng dụng như được mô tả trong phần "Kiểm tra máy chủ tự động hóa" của bài viết này để khắc phục sự cố.

Kiểm tra máy chủ tự động hóa

Nguyên nhân phổ biến nhất gây ra lỗi xảy ra khi bạn sử dụng CreateObject hoặc mới là một vấn đề ảnh hưởng đến các ứng dụng máy chủ. Thông thường, cấu hình ứng dụng hoặc cài đặt ứng dụng gây ra sự cố. Để khắc phục sự cố, sử dụng theo phương pháp:

  • Kiểm tra các ứng dụng Office mà bạn muốn tự động được cài đặt trên máy tính cục bộ. Đảm bảo rằng bạn có thể chạy ứng dụng. Để thực hiện việc này, bấm bắt đầu, bấm Chạy, và sau đó cố gắng chạy ứng dụng. Nếu bạn không thể chạy ứng dụng theo cách thủ công, ứng dụng sẽ không hoạt động thông qua tự động.

  • Đăng ký lại các ứng dụng như sau:

    1. Bấm bắt đầu, và sau đó bấm chạy.

    2. Trong hộp thoại chạy , gõ đường dẫn của máy chủ và sau đó thêm RegServer vào cuối dòng.

    3. Bấm OK. Ứng dụng chạy tự động. Ứng dụng được đăng ký lại như một máy chủ COM.

    Nếu sự cố xảy ra do một khoá đăng ký bị thiếu, các bước thông thường khắc phục sự cố.

  • Kiểm tra chính LocalServer32 trong CLSID cho ứng dụng mà bạn muốn tự động. Đảm bảo rằng phím LocalServer32 trỏ tới vị trí chính xác cho các ứng dụng. Đảm bảo rằng tên đường dẫn ở định dạng ngắn đường dẫn (DOS 8.3). Bạn không phải đăng ký máy chủ bằng cách sử dụng một tên đường dẫn ngắn. Tuy nhiên, tên đường dài bao gồm dấu cách nhúng có thể gây ra sự cố trên một số hệ thống. Để kiểm tra chính đường dẫn được lưu trữ cho máy chủ, khởi động Windows Registry Editor, như sau:

    1. Bấm bắt đầu, và sau đó bấm chạy.

    2. regedit, và sau đó bấm OK.

    3. Di chuyển đến phím HKEY_CLASSES_ROOT\CLSID. CLSID cho các máy chủ đăng ký tự động trên hệ thống đang khoá này.

    4. Sử dụng giá trị sau phím CLSID tìm khoá thể hiện ứng dụng Office mà bạn muốn tự động. Kiểm tra key LocalServer32 phím CLSID cho đường dẫn.

      Văn phòng máy chủ

      Khoá 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. Kiểm tra đường dẫn để đảm bảo rằng nó phù hợp với vị trí thực của tệp.

    Lưu ý Tên đường dẫn ngắn có vẻ đúng khi họ không chính xác. Ví dụ, Office và Microsoft Internet Explorer (nếu chúng được cài đặt ở vị trí mặc định của họ) có đường dẫn ngắn tương tự như C:\PROGRA~1\MICROS~X\ (nơi X là một số). Tên này có thể đã không có tên đường dẫn ngắn. Để xác định xem đường dẫn chính xác, hãy làm theo các bước sau:

    1. Bấm bắt đầu, và sau đó bấm chạy.

    2. Sao chép giá trị từ sổ đăng ký, và sau đó dán giá trị trong hộp thoại chạy . Lưu ý Loại bỏ chuyển đổi /automation trước khi bạn chạy ứng dụng.

    3. Bấm OK.

    4. Kiểm tra các ứng dụng chạy đúng cách. Nếu ứng dụng sau khi bạn bấm OK, máy chủ được đăng ký đúng cách. Nếu ứng dụng không chạy sau khi bạn bấm OK, thay giá trị của LocalServer32 đường dẫn chính xác. Sử dụng tên đường dẫn ngắn nếu bạn có thể.

  • Kiểm tra thể hỏng khuôn mẫu Normal.dot hoặc tệp nguồn Excel.xlb. Sự cố có thể xảy ra khi bạn tự động Microsoft Word hoặc Microsoft Excel nếu khuôn mẫu Normal.dot trong Word hoặc tệp nguồn Excel.xlb trong Excel bị hỏng. Để kiểm tra các tệp, tìm kiếm các đĩa cứng cục bộ cho tất cả các phiên bản của Normal.dot hoặc Excel.xlb. Lưu ý Bạn có thể tìm thấy nhiều bản sao của các tệp này. Đó là một bản sao của các tệp cho mỗi hồ sơ người dùng được cài đặt trên hệ thống. Tạm thời đổi tên tệp Normal.dot hoặc tệp Excel.xlb và sau đó chạy kiểm tra tự động. Word và Excel đều tạo ra các tập tin nếu họ không thể tìm thấy chúng. Xác minh rằng mã hoạt động. Nếu mã hoạt động khi tệp Normal.dot mới được tạo, xoá các tệp mà bạn đã đổi tên. Các tệp bị hỏng. Nếu mã không hiệu quả, bạn phải phục hồi các tập tin tên tệp gốc lưu bất kỳ cài đặt tuỳ chỉnh được lưu trong tệp này.

  • Chạy ứng dụng trong tài khoản quản trị viên. Văn phòng máy chủ yêu cầu truy cập đọc/ghi vào sổ đăng ký và ổ đĩa. Máy chủ Office có thể không tải đúng nếu thiết đặt bảo mật hiện tại của bạn từ chối truy nhập đọc/ghi.

Kiểm tra hệ thống

Cấu hình hệ thống cũng có thể gây ra sự cố tạo ra quá trình COM máy chủ. Để khắc phục, sử dụng các phương pháp sau đây trên hệ thống có xảy ra lỗi:

  • Xác định xem sự cố xảy ra với bất kỳ máy chủ ra quá trình. Nếu bạn có một ứng dụng sử dụng máy chủ COM cụ thể (chẳng hạn như Word), kiểm tra máy chủ ra quá trình khác nhau để đảm bảo rằng sự cố không xảy ra trong lớp COM. Nếu bạn không thể tạo một máy chủ COM ra quá trình trên máy tính, cài đặt các tệp hệ thống OLE như được mô tả trong phần "Cài đặt Microsoft Office" của bài viết này, hoặc cài đặt lại hệ điều hành để giải quyết sự cố.

  • Kiểm tra các số phiên bản tập tin hệ thống OLE quản lý tự động. Các tệp này thường được cài đặt như một. Các tệp này phải khớp với số xây dựng. Một tiện ích thiết lập cấu hình không đúng có thể sai cài đặt các tệp riêng biệt. Điều này khiến các tệp được không khớp. Để tránh sự cố tự động, hãy kiểm tra tệp để đảm bảo rằng các bản dựng tệp được kết hợp. Tự động này nằm trong thư mục Windows\System32. Kiểm tra các tập tin.

    Tên tệp

    Phiên bản

    Ngày sửa đổi

    Asycfilt.dll

    10.0.16299.15

    Ngày 29 tháng 9 năm 2017

    Ole32.dll

    10.0.16299.371

    Ngày 29 tháng 3 năm 2018

    Oleaut32.dll

    10.0.16299.431

    3 tháng 5 năm 2018

    Olepro32.dll

    10.0.16299.15

    Ngày 29 tháng 9 năm 2017

    Stdole2.tlb

    3.0.5014

    Ngày 29 tháng 9 năm 2017

    Để kiểm tra phiên bản tệp, bấm chuột phải vào tệp trong Windows Explorer, và sau đó bấm thuộc tính. Lưu ý cuối cùng bốn chữ số phiên bản tệp (mã số đóng gói) và ngày tệp được đổi. Đảm bảo rằng các giá trị này là giống nhau cho tất cả các tệp tự động. Lưu ý Các tệp sau đây là dành cho Windows 10 phiên bản 1709, xây dựng 16299.431. Số các ngày là ví dụ chỉ. Giá trị của bạn có thể khác nhau.

  • Sử dụng tiện ích cấu hình hệ thống (Msconfig.exe) để kiểm tra dịch vụ và hệ thống khởi động ứng dụng của bên thứ ba có thể hạn chế chạy mã trong ứng dụng Office. Để biết thêm thông tin về Msconfig.exe, hãy xem bài viết sau trong cơ sở kiến thức Microsoft:

    181966 Cài đặt Khắc phục sự cố Nâng cao của Tiện ích cấu hình Hệ thống Ví dụ: Outlook tự động các ứng dụng có thể không thành công vì bạn đang chạy một chương trình chống vi-rút có tính năng "tập lệnh chặn". Lưu ý Vô hiệu hoá chương trình chống vi-rút chỉ tạm thời trên hệ thống kiểm tra không được kết nối mạng. Ngoài ra, làm theo các bước trong Outlook để vô hiệu hoá bên thứ ba add-in: Nếu phương pháp này giải quyết sự cố, hãy liên hệ với nhà cung cấp chống vi-rút của bên thứ ba để biết thêm thông tin về bản Cập Nhật chương trình chống vi-rút.

    1. Trên menu tệp , bấm vào tuỳ chọnvà sau đó bấm Add-in.

    2. Bấm quản lý COM add-in, và sau đó bấm bắt đầu. Lưu ý Mở hộp thoại COM add-in .

    3. Bỏ chọn hộp kiểm cho bất kỳ bên thứ ba thêm vào, và sau đó bấm OK.

    4. Khởi động lại Outlook.

Cài đặt Office

Nếu không có các quy trình trước giải quyết vấn đề, loại bỏ và sau đó cài đặt lại Office.

Để biết thêm thông tin, hãy xem Office sau bài viết:

Tải xuống và cài đặt hoặc cài đặt lại Office 365 hoặc Office 2016 trên PC hoặc máy Mac

Tham khảo

Để biết thêm thông tin về tự động hoá Office và mẫu mã, hãy truy cập website sau của Microsoft:

Bắt đầu phát triển Office

Bạn cần thêm trợ giúp?

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft dùng nội bộ

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?

Cảm ơn phản hồi của bạn!

×