ข้อมูล: การแก้ไขข้อผิดพลาด 429 เมื่ออัตโนมัติโปรแกรมประยุกต์ของ Office

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 244264 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

เมื่อคุณใช้การใหม่ตัวดำเนินการ หรือCreateObjectฟังก์ชันใน Microsoft Visual Basic เพื่อสร้างอินสแตนซ์ของโปรแกรมประยุกต์ Microsoft Office ที่ คุณอาจเรียกข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาดขณะเรียกใช้ '429': คอมโพเนนต์ ActiveX ไม่สามารถสร้างวัตถุ
ข้อผิดพลาดนี้เกิดขึ้นเมื่อทำงานอัตโนมัติวัตถุที่ร้องขอไม่สามารถสร้าง ด้วย COM ดัง นั้นไม่พร้อมใช้งาน Visual Basic จึง ข้อผิดพลาดจะดูได้บนคอมพิวเตอร์บางอย่างแต่ไม่อื่น ๆ โดยทั่วไป

บทความนี้แสดงทิปสำหรับการแก้ไขปัญหาต่าง ๆ เพื่อช่วยคุณในการวินิจฉัย และแก้ไขปัญหาทั่วไปที่ทราบว่าทำให้เกิดข้อผิดพลาดนี้

ข้อมูลเพิ่มเติม

ซึ่งแตกต่างจากข้อผิดพลาดบางข้อใน Visual Basic ไม่มีสาเหตุที่หนึ่งไม่มีข้อผิดพลาด 429 ปัญหาที่เกิดขึ้นเนื่องจากความข้อผิดพลาดในการกำหนดค่าระบบหรือโปรแกรมประยุกต์ หรือคอมโพเนนต์ขาดหายไป หรือเสียหาย การค้นหาสาเหตุที่แน่นอนได้แต่การตัดออกความเป็นไปได้ หากคุณพบข้อผิดพลาดนี้ในคอมพิวเตอร์ไคลเอนต์ มีอยู่หลายสิ่งที่คุณต้องการตรวจสอบการแยก และแก้ไขข้อผิดพลาด

รายการในภายหลังให้คำแนะนำบาง practical สำหรับการแก้ไขปัญหาข้อผิดพลาดนี้เมื่อคุณทำงานกับโปรแกรมประยุกต์ Office บางส่วนของข้อมูลนี้ยังอาจใช้กับเซิร์ฟเวอร์ไม่ - Office COM ด้วย แต่บทความนี้อนุมานคุณพยายามที่จะทำให้ Microsoft Office

การตรวจสอบรหัสการขาย

สถานที่แรกเพื่อเริ่มการค้นหาปัญหาที่อยู่ในรหัส ก่อนที่คุณสามารถแก้ไขปัญหาข้อความแสดงข้อผิดพลาด คุณจำเป็นต้องทราบที่มีข้อผิดพลาดเกิดขึ้น มีความพยายามแคบลงมาเป็นบรรทัดเดียวของรหัส

เมื่อคุณค้นหาข้อความแสดงรหัสที่มีความล้มเหลว ลองทำต่อไปนี้:
  • ตรวจสอบให้แน่ใจว่า รหัสใช้สร้างวัตถุอย่างชัดเจน ปัญหาใด ๆ ได้ง่ายขึ้น spot และระบุว่าปัญหาคือ narrowed กับการดำเนินการเดียว ตัวอย่างเช่น ไม่ทำต่อไปนี้:
    Application.Documents.Add 'DON'T USE THIS!!
    						
    หรือ:
    
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    						
    ทั้งสองวิธีใช้การสร้างวัตถุ implicit Microsoft Word ไม่เริ่มทำงานจนกว่าตัวแปรถูกเรียกอย่างน้อยหนึ่งครั้ง เนื่องจากตัวแปรสามารถถูกเรียกในส่วนต่าง ๆ ของโปรแกรม ซึ่งสามารถทำให้ปัญหาฮาร์ localize นอกจากนี้ยัง จะล้างว่าปัญหาเกี่ยวกับการสร้างวัตถุโปรแกรมประยุกต์หรือวัตถุเอกสารไม่

    แทน โทรศัพท์อย่างชัดเจนในการสร้างวัตถุแต่ละแยกจากกัน:
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    						
    ทำให้ง่ายขึ้นเพื่อแยกปัญหา และทำให้รหัสอ่านง่ายขึ้น
  • เมื่อต้องการสร้างอินสแตนซ์ของโปรแกรมประยุกต์ Microsoft Office ใช้CreateObjectแทนใหม่.CreateObjectยิ่งกขนาดแมปกับกระบวนการสร้างที่ใช้ โดยไคลเอนต์ c ++ Visual ส่วนใหญ่ และช่วยให้การเปลี่ยนแปลงที่เป็นไปได้ใน CLSID ของเซิร์ฟเวอร์ระหว่างรุ่นCreateObjectสามารถใช้กับวัตถุก่อนหน้าขอบ และ ขอบล่าช้า
  • ตรวจสอบว่า สตริงที่ ProgID ที่ส่งผ่านไปCreateObjectแก้ไข และจึงนั้นจะขึ้นอยู่กับรุ่น (นั่นคือ ใช้ "Excel.Application" แทน "Excel.Application.8") คุณอาจสามารถว่า ระบบที่มีความล้มเหลวมีการรุ่นเก่า หรือใหม่กว่ารุ่น Microsoft Office ไม่ใช่รุ่นคุณระบุใน ProgID ต่อไปนี้
  • เพื่อช่วยในการตรวจแก้จุดบกพร่องของโปรแกรมประยุกต์ที่ไม่สามารถเรียกใช้ในการ IDE ใช้Erlคำสั่งเพื่อรายงานการหมายเลขบรรทัดของบรรทัดที่ล้มเหลว ตัวอย่างเช่น รหัสต่อไปนี้จะบอกคุณไม่สามารถสร้างวัตถุที่ทำงานอัตโนมัติ (Word หรือ Excel):
    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
    						
    ใช้ชุดของกล่องข้อความและหมายเลขของบรรทัดการติดตามลงข้อผิดพลาด
  • ลองใช้การรวมภายหลัง (นั่นคือ ขนาด oWordApp เป็นวัตถุ) วัตถุที่ถูกผูกไว้ก่อนหน้าต้องการของอินเทอร์เฟซแบบกำหนดเองสามารถ marshaled ข้ามขอบเขตของกระบวนการ หากมี ปัญหา marshaling อินเทอร์เฟซแบบกำหนดเองในระหว่างCreateObjectหรือใหม่คุณจะได้รับข้อความแสดงข้อผิดพลาด 429 วัตถุที่ถูกผูกไว้ล่าช้าใช้อินเทอร์เฟซระบบกำหนดไว้สำหรับ (IDispatch) ที่ไม่ต้องใช้พร็อกซีที่กำหนดเองเพื่อให้สามารถ marshaled ลองใช้วัตถุที่ถูกผูกไว้ล่าช้าเมื่อต้องการดูว่า ซึ่งทำให้แตกต่างกัน

    หากปัญหาเกิดขึ้นเฉพาะเมื่อวัตถุถูกก่อนหน้าขอบ ปัญหากับโปรแกรมประยุกต์ของเซิร์ฟเวอร์ และสามารถถูกแก้ไข โดยการติดตั้งโปรแกรมประยุกต์ใหม่ (โปรดดูในภายหลัง) โดยทั่วไป
  • ถ้าคุณกำลังอัตโนมัติจาก ASP หรือส่วนประกอบเพิ่ม MTS ใช้CreateObjectแทนServer.CreateObject(). การใช้Server.CreateObjectจะสร้างอินสแตนซ์ของโปรแกรมประยุกต์ Office ภายใต้ข้อมูลเฉพาะตัวของแพคเกจการ MTS ซึ่งเรียกว่าการทำให้เกิดปัญหากับ Microsoft Office

การตรวจสอบเซิร์ฟเวอร์ Automation

ข้อผิดพลาดสาเหตุทั่วไปมากที่สุดCreateObjectหรือใหม่are problems with the server application itself. Typically, these problems are with the configuration or setup of the application. Here are some items to check:
  • Verify the Microsoft Office application you want to Automate is installed on the local computer, and make sure that you can start the application from the Start and then Run dialog box. If the program cannot be started manually, it will not work through automation.
  • Re-register the application by typing the path to the server in the Start and then Run dialog box, and then append/RegServerto the end of the line. กดตกลง. This should silently run the application and re-register it as a COM server. If the problem is with a missing registry key, this will typically correct it.
  • Check the LocalServer32 key under the CLSID for the application you want to Automate. Make sure it points to the correct location for the application, and make sure the path name is in a short path (DOS 8.3) format. While it is not a requirement that a server be registered using a short path name, long path names that include embedded spaces have been known to cause problems on some systems (see later).

    To check the path key stored for the server, start the Windows Registry Editor by typingregeditin the Start and then Run dialog box. Navigate to the HKEY_CLASSES_ROOT\Clsid key. Under this key you will find the CLSIDs for the registered automation servers on the system. Using the values later, find the key that represents the Office application you want to Automate and check its LocalServer32 key for the path.
       +========================+=========================================+
       | Office Server          | CLSID Key                               |
       +========================+=========================================+
       | Access.Application     | {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}  |
       +------------------------+-----------------------------------------+
       | Excel.Application      | {00024500-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | FrontPage.Application  | {04DF1015-7007-11D1-83BC-006097ABE675}  |
       +------------------------+-----------------------------------------+
       | Outlook.Application    | {0006F03A-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | PowerPoint.Application | {91493441-5A91-11CF-8700-00AA0060263B}  |
       +------------------------+-----------------------------------------+
       | Word.Application       | {000209FF-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
    						
    Does the path match the actual location of the file? Be aware that short path names can give you the impression that a path is correct when it may not be. For example, both Microsoft Office and Microsoft Internet Explorer (if installed in their default locations) will have a short path similar to "C:\PROGRA~1\MICROS~X\" where X is some number. It is not immediately obvious that you are looking at from a short path name.

    You can test that the path is indeed correct by copying the value from the registry and pasting it into the Start and then Run dialog box (remove the/Automationswitch before running the application). Does the application start when you selectตกลง? If yes, then the server is registered correctly. If not, you should replace the value of the LocalServer32 key with the correct path (use a short path name if possible).
  • Problems have been known to occur when automating Word or Excel if either the Normal.dot template (Word) or the Excel.xlb resource file (Excel) has become corrupt. To test if a corruption has occurred, search the local hard drives to find all instances of Normal.dot or *.xlb. (Please note that if you are running Windows 2000, Windows NT, or Windows 95/98 with profiles enabled, you may find multiple copies of these files, one for each user profile on the system.) Temporarily rename the Normal.dot file(s) or the *.xlb file(s), and re-run your Automation test (Word and Excel will create these files if they cannot find them). Does the code now work? If yes, then the files you renamed should be deleted since they are corrupt. If not, you should rename them back to their original names so any custom settings saved in these files won't be lost.
  • If you are on a Windows NT, Windows 2000, Windows XP, or Windows Server 2003 system, run the application under the Administrator account. Office servers require read/write access to the registry and disk drive, and may not properly load if your current security settings deny this privilege.

Checking the System

System configuration can also cause problems with the creation of out-of-process COM servers. The following are some things to check on systems where the error occurs:
  • Does the problem happen with any out-of-process server? If you have an application that just uses a particular COM server (for example, Word), you'll want to test a different out-of-process server to make sure the problem is not with COM layer itself. If no out-of-process COM server can be created on that system, then a reinstallation of the OLE system files (see below) or a reinstallation of the operating system will be required to resolve the issue.
  • Check the version numbers for the OLE system files that manage Automation. These files are typically installed as a set, and should match build numbers. An improperly configured setup utility can mistakenly install the files separately, causing them to become mismatched. To avoid problems with Automation, you should check the files to make sure the files match builds.

    You will find the Automation files in the Windows\System or Winnt\System32 directory. The following is the list of files to check:
       +---------------+-------------+----------------+
       | File Name     |  Version    | Date Modified  |
       +---------------+-------------+----------------+
       | Asycfilt.dll  |  2.40.4275  | March 08, 1999 |
       | Oleaut32.dll  |  2.40.4275  | March 08, 1999 |
       | Olepro32.dll  |  5.0.4275   | March 08, 1999 |
       | Stdole2.tlb   |  2.40.4275  | March 08, 1999 |
       +---------------+-------------+----------------+
    						
    ตรวจสอบรุ่นของแฟ้ม โดยการคลิกขวาที่แฟ้มใน Explorer และเลือกคุณสมบัติจากเมนูแบบผุดขึ้น ค่าสำคัญที่สุดมีตัวเลขสี่ครั้งสุดท้ายของรุ่นของแฟ้ม (หมายเลขการสร้าง) และวันปรับเปลี่ยนล่าสุด คุณต้องการตรวจสอบให้แน่ใจว่า ค่าเหล่านี้จะเหมือนกันสำหรับแฟ้มระบบอัตโนมัติทั้งหมด

    โปรดทราบว่า หมายเลขรุ่นและวันที่ที่ระบุข้างต้นเป็นตัวอย่างเช่นเท่านั้น ค่าของคุณอาจแตกต่างกัน สิ่งที่สำคัญคือ ว่า ค่าเหล่านี้ตรงกัน มากกว่าตารางนี้

    ถ้าแฟ้มไม่ตรงกับหมายเลขรุ่นต่อหรือวันปรับเปลี่ยนแล้ว คุณสามารถดาวน์โหลดโปรแกรมอรรถประโยชน์เองที่จะปรับปรุงแฟ้มของคุณทำงานอัตโนมัติสำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
    290887VBRun60sp6.exe Visual Basic 6.0 SP6 เวลาเรียกใช้แฟ้มที่ติดตั้ง
  • windows NT 4.0 มีปัญหาที่ทราบอยู่แล้ว ด้วยการเริ่มต้นเซิร์ฟเวอร์ Automation ที่ถ่ายทอดสดในโฟลเดอร์ที่ประกอบด้วยเนื้อที่ที่ฝังตัวในชื่อ และ/หรือคล้ายกับโฟลเดอร์อื่นที่มีอักขระ 8 ก่อนจะเหมือน ตัวอย่างเช่น living ใน Files\SomeFolder C:\Program เซิร์ฟเวอร์อาจล้มเหลวในการเริ่มการทำงานในระหว่างการเรียก CreateObject ถ้ามีโฟลเดอร์อื่นบนระบบเรียกว่า Stuff\SomeFolder C:\Program สำหรับข้อมูลเพิ่มเติม ให้ดูบทความต่อไปนี้ของ Knowledge Base:สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้และขั้นตอนการแก้ปัญหาดังกล่าว คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
    185126BUG: COM/OLE เซิร์ฟเวอร์ไม่ให้เริ่มใน Windows NT 4.0

การติดตั้ง Microsoft Office

ถ้าไม่มีขั้นตอนก่อนหน้านี้ช่วยแก้ไขปัญหา ให้ลองถอนการติดตั้ง และการติดตั้ง Microsoft Office Microsoft แนะนำว่า คุณถอนการติดตั้งรุ่นที่มีอยู่ก่อน และติดตั้งจากดิสก์การติดตั้งเดิม

สำหรับรายการทั้งหมดของสินค้าที่จะถูกเอาออกไป โปรดดูบทความต่อไปนี้ของ Knowledge Base:
219423OFF2000: อย่างไร Microsoft Office 2000 ที่เอาออกทั้งหมด
158658OFF97: อย่างไร Microsoft Office 97 ที่เอาออกทั้งหมด

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขปัญหาข้อผิดพลาด '429' คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
240377HOWTO: Insure Jet 3.5 ถูกติดตั้งอย่างถูกต้อง (ส่วนฉัน)
สำหรับข้อมูลล่าสุดและโค้ดตัวอย่างเกี่ยวกับ Microsoft Office Automation โปรดดูไซต์การสนับสนุนออนไลน์ของ Microsoft ที่:
http://support.microsoft.com/ofd
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

คุณสมบัติ

หมายเลขบทความ (Article ID): 244264 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft Outlook 97 Standard Edition
  • Microsoft Outlook 98 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Keywords: 
kbautomation kbinfo kbmt KB244264 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:244264

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com