Office c ทำงานโดยอัตโนมัติโดยใช้ Visual ++

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

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

สรุป

บทความนี้ตอบคำถามทั่วไปที่เกี่ยวข้องกับการทำงานโดยอัตโนมัติไปยัง Microsoft Office จาก c ++ Visual

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

สารบัญ

  1. ทำงานอัตโนมัติคืออะไร
  2. ฉันใหม่เพื่อดำเนินการอัตโนมัติ โดยที่ฉันสามารถค้นหาทรัพยากรที่ดีในการเรียนรู้เพิ่มเติมหรือไม่
  3. มีวิธีการต่าง ๆ ที่ฉันสามารถใช้การทำงานโดยอัตโนมัติหรือไม่
  4. COM คืออะไร
  5. ฉันแนบเข้ากับอินสแตนซ์กำลังทำงานของโปรแกรมประยุกต์ Office ได้อย่างไร
  6. ฉันส่งผ่านพารามิเตอร์ที่ไม่จำเป็นได้อย่างไร
  7. ฉันตรวจจับเหตุการณ์ที่เปิดเผย โดยโปรแกรมประยุกต์ Office ได้อย่างไร
  8. รหัสการดำเนินการอัตโนมัติของฉันจะช้าเกินไป อย่างไรสามารถฉันเร็ว
  9. ค่าเหล่านี้ข้อผิดพลาดที่ใหญ่มาก เช่น-2147352573 หรือ 0x80030002 มีความหมายอย่างไร
  10. ไลบรารีชนิดคืออะไร
  11. รหัสการดำเนินการอัตโนมัติของฉันทำงานกับ Microsoft Excel 95 แต่ล้มเหลวด้วย Microsoft Excel 97 ทำไม
  12. เหตุใดจึงไม่แอพลิเคชันที่ฉันกำลังทำโดยอัตโนมัติอยู่ในหน่วยความจำหลังจากโปรแกรมของฉัน จะเสร็จสิ้น
  13. ฉันทราบว่าสิ่งที่ฉันต้องการทำเป็นผู้ใช้โปรแกรมประยุกต์ Microsoft Office แต่ อย่างไรนี้โดยทางโปรแกรมโดยใช้ระบบอัตโนมัติหรือไม่
  14. ฉันสามารถทำให้โปรแกรมประยุกต์ของ Microsoft Office ที่ฝังตัวหรือไม่
  15. ฉันเข้าถึงคุณสมบัติเอกสารของฉันในเอกสาร Microsoft Office ได้อย่างไร

คำถามและคำตอบ

  1. ทำงานอัตโนมัติคืออะไร

    Automation (เคย OLE Automation) เป็นเทคโนโลยีที่ช่วยให้คุณสามารถ ใช้ประโยชน์จากฟังก์ชันการทำงานของโปรแกรมที่มีอยู่ และรวมดังกล่าว ลงในโปรแกรมประยุกต์ของคุณเอง ตัวอย่างเช่น คุณสามารถใช้ Microsoft การสะกดคำและไวยากรณ์ที่ตรวจสอบความสามารถในการเข้าไปในโปรแกรมประยุกต์ของคุณ โดยไม่มี Microsoft Word สามารถมองเห็นผู้ใช้ของคุณ คุณสามารถใช้ทั้งหมด เครื่องมือ Microsoft Excel แผนภูมิ พิมพ์ และข้อมูลการวิเคราะห์ต่าง ๆ นี้ เทคโนโลยีสามารถอย่างมากง่ายขึ้น และเร่งการพัฒนาของคุณ
  2. ฉันใหม่เพื่อดำเนินการอัตโนมัติ โดยที่ฉันสามารถค้นหาทรัพยากรที่ดีในการเรียนรู้เพิ่มเติมหรือไม่ บทที่ 24 ของ David Kruglinski ของ "ภายใน c ++เสมือน" (ISBN:1-57231 - 565 - 2) ให้ข้อมูลภาพรวมทั่วไปเช่นเดียวกับบางตัวอย่างที่ดี นอกจากนี้ ฐานความรู้ของ Microsoft เป็นแหล่งข้อมูลที่ดี นี้ บทความตัวเองเป็นจุดเริ่มต้นที่ดี และคุณสามารถค้นหาเฉพาะเจาะจงมากขึ้น หากต้องการอ้างอิงในบทความต่อไปนี้ในฐานความรู้ของ Microsoft:
    152023ค้นหาทรัพยากรเพื่อการศึกษา OLE Automation
    ถ้าคุณต้องการเรียนรู้ ด้วยตัวอย่าง โปรดดูบทความต่อไปนี้ใน ฐานความรู้ของ Microsoft:
    179706HOWTO ใช้ MFC การ Excel & สร้าง/รูปแบบสมุดงานใหม่โดยอัตโนมัติ
  3. มีวิธีการต่าง ๆ ที่ฉันสามารถใช้การทำงานโดยอัตโนมัติหรือไม่

    มีวิธีพื้นฐานสามที่คุณสามารถใช้การดำเนินการอัตโนมัติ: MFC, #import และ C/C ++:

    • ด้วย MFC ใช้ ClassWizard c ++ภาพเพื่อสร้างแรปเปอร์สำหรับ" ไลบรารีชนิดคลาสที่"จาก Microsoft Office คลาสที่เหล่านี้ เป็น รวมทั้งเป็นคลา MFC เช่น COleVariant, COleSafeArray COleException ทำงานของระบบอัตโนมัติ วิธีการนี้คือ โดยปกติจะแนะนำอื่น ๆ และส่วนใหญ่ของ Microsoft ตัวอย่างฐานความรู้ใช้ MFC
    • #import ไดเรกทีฟแบบใหม่ที่เริ่มใช้ได้กับ 5.0 c ++ Visual สร้าง VC ++ "ตัวชี้สมาร์ท" จากไลบรารีชนิดที่ระบุ เป็น มีประสิทธิภาพสูงมาก แต่มักจะไม่แนะนำเนื่องจากการอ้างอิง - ปัญหาที่มักจะเกิดขึ้นเมื่อใช้กับ Microsoft ในการตรวจนับ โปรแกรมประยุกต์ office
    • C/c ++ Automation จะมากยาก แต่บางครั้งจำเป็นต้อง หลีกเลี่ยงค่าใช้จ่าย ด้วย MFC หรือปัญหาเกี่ยวกับ #import โดย คุณ การทำงานกับ APIs เช่น CoCreateInstance() และ COM อินเตอร์เฟส เช่น IDispatch และ IUnknown
    จำเป็นต้องทราบว่า จะบางจาง ๆ แตกต่าง ทำงานอัตโนมัติจาก c ++เมื่อเปรียบเทียบกับ C แบบธรรมดา เนื่องจาก COM ถูกออกแบบมาล้อมรอบ คลาส c ++ สำหรับข้อมูลเพิ่มเติม โปรดดูบทความต่อไปนี้ใน Microsoft Knowledge Base สำหรับตัวอย่างที่ C:
    181473HOWTO: ใช้ OLE Automation จากแอพลิเคชันที่ C
  4. COM คืออะไร

    ทำงานโดยอัตโนมัติตามบนคอมโพเนนต์วัตถุแบบจำลอง (COM) COM ได้ ขึ้นอยู่กับอินเทอร์เฟซ สถาปัตยกรรมซอฟต์แวร์มาตรฐาน และการออกแบบมาเพื่อให้ รหัสที่ถูกแยกเป็นวัตถุชิ้น ให้คิดว่า มันเป็นนามสกุล ของ paradigm วัตถุที่จัดตำแหน่งสำหรับการเขียน (OOP) แต่สามารถใช้ได้กับ แยกโปรแกรมประยุกต์ แต่ละวัตถุแสดงชุดของอินเทอร์เฟซ และโฟลเดอร์ทั้งหมด การสื่อสารไปยังวัตถุ เช่นการเตรียมใช้งาน การแจ้งเตือน และ การถ่ายโอนข้อมูล ผ่านอินเตอร์เฟซเหล่านี้เกิดขึ้น

    COM เป็นชุดของบริการที่ให้ไว้ โดยไลบรารีการเชื่อมโยงแบบ (Dll) ติดตั้งมากับระบบปฏิบัติการ Automation จำนวนมากที่ใช้ บริการ ตัวอย่างหนึ่งคือ การบริการ "Marshalling" แพคเกจใด เรียกใช้โปรแกรมประยุกต์ไคลเอนต์ฟังก์ชันสมาชิกของเซิร์ฟเวอร์ แอพลิเคชันของอินเทอร์เฟซ และผ่านรายการที่ มีอาร์กิวเมนต์ของพวกเขา ไป โปรแกรมประยุกต์เซิร์ฟเวอร์ ทำให้ดูเหมือน ว่า อินเตอร์เฟสของเซิร์ฟเวอร์ เปิดเผยในไคลเอ็นต์พื้นที่หน่วยความจำ ซึ่งไม่ได้เกิดขึ้นในกรณีเมื่อนั้น ไคลเอ็นต์จะเป็น.exe ที่ทำงานอยู่ในพื้นที่ของกระบวนการของตัวเอง Marshalling ยัง ได้รับค่าที่ส่งกลับจากวิธีการของเซิร์ฟเวอร์กลับข้ามกระบวนการ ขอบเขตและอย่างปลอดภัยเข้าไป ในมือของการเรียกของไคลเอ็นต์ ไม่มี หลายบริการอื่น ๆ จำเป็นต่อการทำงานอัตโนมัติที่มีอยู่โดยการ ไลบรารี COM ที่แตกต่างกัน แหล่งข้อมูลเกี่ยวกับรายการที่รวม "ภายใน Ole - รุ่นที่สอง" โดย Kraig Brockschmidt, ISBN 1-55615-843-2 "ภายใน COM" โดย Dale Rogerson - ISBN 1-57231-349-8 และ "การทำงานอัตโนมัติ อ้างของโปรแกรมเมอร์อิง ISBN 1-57231-584-9
  5. ฉันแนบเข้ากับอินสแตนซ์กำลังทำงานของโปรแกรมประยุกต์ Office ได้อย่างไร

    ใช้ GetActiveObject() API เซิร์ฟเวอร์ automation ที่ลงทะเบียนในตัวเอง ROT (รันออปเจ็กต์ตาราง), ผ่าน RegisterActiveObject() API ไคลเอ็นต์การดำเนินการอัตโนมัติสามารถรับที่อินสแตนซ์กำลังทำงานกับรหัสเช่น:
          // Translate server ProgID into a CLSID. ClsidFromProgID
          // gets this information from the registry.
          CLSID clsid;
          CLSIDFromProgID(L"Excel.Application", &clsid);  
    
          // Get an interface to the running instance, if any..
          IUnknown *pUnk;
          HRESULT hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);
    
          ASSERT(!FAILED(hr));
    
          // Get IDispatch interface for Automation...
          IDispatch *pDisp;
          hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);
          ASSERT(!FAILED(hr));
    
          // Release the no-longer-needed IUnknown...
          pUnk->Release();
    
    						
    หมายเหตุ: ถ้าไม่มีอินสแตนซ์จำนวนมากทำงานของโปรแกรมประยุกต์ Office ที่คุณต้องการแนบ คุณเท่านั้นจะสามารถแนบเข้ากับอินสแตนซ์แรกที่ถูกเปิดใช้แล้วโดยใช้ GetActiveObject() API

    ทาง คุณสามารถทำซ้ำใน ROT สำหรับแต่ละอินสแตนซ์แต่ละ แต่ โปรแกรมประยุกต์ Office ไม่ทะเบียนถ้าอินสแตนซ์อื่นอยู่แล้ว ในการ ROT เนื่องจากมอนิเกอร์สำหรับตัวเองเสมอเหมือนกัน (มัน ไม่ได้แตกต่างทุกกรณี) ซึ่งหมายความ ว่า คุณไม่สามารถแนบ อินสแตนซ์ใด ๆ ยกเว้นสำหรับรายการแรก อย่างไรก็ตาม เนื่องจากโปรแกรมประยุกต์ Office ยัง การลงทะเบียนเอกสารของตนในการ ROT เสร็จเรียบร้อยแล้วคุณสามารถแนบกับ อินสแตนซ์อื่น ๆ โดยวน ROT การค้นหาเอกสารเฉพาะ แนบนั้น แล้ว รับวัตถุโปรแกรมประยุกต์จากนั้น ไม่มี รหัสบางอย่างในบทความฐานความรู้ของ Microsoft ต่อไปนี้สำหรับ วน ROT และค้นหาชื่อเอกสาร:
    190985HOWTO: ได้รับการ IDispatch ของ Excel หรือเอกสาร Word จากการ OCX
    คุณไม่จำเป็นต้องทำเช่นนี้สำหรับ PowerPoint เนื่องจากเป็นคำเดียว- อินสแตนซ์ของแอพลิเคชัน คุณสามารถมีอินสแตนซ์หนึ่งของมันทำงานอยู่เท่านั้น
  6. ฉันส่งผ่านพารามิเตอร์ที่ไม่จำเป็นได้อย่างไร

    วิธีการบางอย่างมีพารามิเตอร์ "หรือไม่ก็ได้" ใน Visual Basic คุณสามารถ casually ข้ามเหล่านั้นเมื่อเรียกใช้เมธอด อย่างไรก็ตาม เมื่อเรียกด้วย คือ visual c ++ที่คุณจำเป็นต้องส่งผ่านตัวแปรพิเศษซึ่งมีเขตข้อมูล.vt VT_ERROR และ.scode ฟิลด์เป็น DISP_E_PARAMNOTFOUND ที่อยู่:
          // VARIANT used in place of optional-parameters.
          VARIANT varOpt;
          varOpt.vt = VT_ERROR;
          varOpt.scode = DISP_E_PARAMNOTFOUND;
    						
    นี่คือจริง ๆ Visual Basic จะทำอะไร behind-the-scenes
  7. ฉันตรวจจับเหตุการณ์ที่เปิดเผย โดยโปรแกรมประยุกต์ Office ได้อย่างไร

    โดยคุณใช้อินเทอร์เฟซสำหรับเหตุการณ์คุณต้องการตรวจจับ ( พัก "ข้อมูล"), และการตั้งค่าการเชื่อมต่อที่มีคำแนะนำกับแอพลิเคชัน (ที่ "แหล่ง") บทความต่อไปนี้แสดงตัวอย่างแต่ละขั้นตอนสำหรับ Microsoft Word:
    183599HOWTO: ตรวจจับเหตุการณ์ของโปรแกรมประยุกต์ Microsoft Word97 ใช้ VC ++
    โดยทั่วไป การเซ็ตอัพคำแนะนำการเชื่อมต่อ คุณได้รับของเซิร์ฟเวอร์ IConnectionPointContainer และ FindConnectionPoint() ด้วย IID ของโทร อินเทอร์เฟซสำหรับเหตุการณ์ ซึ่งทำให้คุณอินเทอร์เฟซของ IConnectionPoint และ ทั้งหมดที่เหลือคือการเรียก Advise() กับอินสแตนซ์ของเหตุการณ์ของคุณ อินเทอร์เฟซ เซิร์ฟเวอร์จะ จากอินเทอร์เฟซการเรียกกลับผ่านนี้เมื่อใด เหตุการณ์เหล่านี้เกิดขึ้น
  8. รหัสการดำเนินการอัตโนมัติของฉันจะช้าเกินไป อย่างไรสามารถฉันเร็ว

    สาเหตุของปัญหาความเร็วในการทำงานอัตโนมัติจะ มีการซ้ำ อ่าน และเขียนข้อมูล นี่เป็นการทั่วไปสำหรับการทำงานอัตโนมัติของ Excel ไคลเอ็นต์ อย่างไรก็ตาม คนส่วนใหญ่ไม่ทราบว่า ข้อมูลนี้จะมักจะสามารถ ทั้งเขียน หรืออ่านหมดในครั้งเดียวโดยใช้ SAFEARRAY ดู Microsoft ต่อไปนี้ บทความ Knowledge Base สำหรับข้อมูลเพิ่มเติมและตัวอย่างสด ๆ:
    186120HOWTO: ใช้ MFC อัตโนมัติ Excel และเติมช่วงกับอาร์เรย์
    186122HOWTO: ใช้ MFC อัตโนมัติ Excel & รับอาร์เรย์จากช่วง
    179706HOWTO: ใช้ MFC Excel โดยอัตโนมัติ และสร้าง/รูปแบบสมุดงานใหม่
    ยัง จำเป็นต้องชี้ออกที่ใช้สามารถคลิปบอร์ด เพิ่มประสิทธิภาพในบางครั้ง ตัวอย่างเช่น คุณสามารถคัดลอกข้อมูลของคุณ คลิปบอร์ด นั้นใช้ automation จะบอกเซิร์ฟเวอร์การวาง หรือในทางกลับ- ในทางกลับกัน บอกเซิร์ฟเวอร์เพื่อคัดลอกไปยังคลิปบอร์ด และวางลงในของคุณ แอพลิเคชัน
  9. ค่าเหล่านี้ข้อผิดพลาดที่ใหญ่มาก เช่น-2147352573 หรือ 0x80030002 ทำอะไร หมายความว่าอย่างไร

    ค่าเหล่านี้จะเรียกว่า HRESULTs และกำหนดไว้ใน winerror.h ที่ ตัวเลขมีขนาดใหญ่มากเนื่องจากแรกบิตแสดงหรือไม่นั้น มีผลลัพธ์ผิดพลาด คุณสามารถใช้โปรแกรมอรรถประโยชน์ ErrLook.Exe ที่มาพร้อมกับ C ++เสมือนการแปลหมายเลขเหล่านี้เป็นคำอธิบายที่มีความหมาย

    ถ้าคุณต้องการคำอธิบายสำหรับข้อผิดพลาด ได้รับโดยทางโปรแกรมคุณ สามารถใช้ FormatMessage() API ดูความรู้ของ Microsoft ต่อไปนี้ บทความพื้นฐานสำหรับข้อมูลเพิ่มเติมและตัวอย่างการใช้งานของ FormatMessage():
    186063รายละเอียด: การแปลข้อผิดพลาดในการทำงานอัตโนมัติสำหรับ VB/VBA
    122957ตัวอย่าง: Decode32 และ Decode16 OLE ถอดรหัสข้อผิดพลาดมือ
    หมายเหตุ: ถ้าคุณกำลังใช้ Visual c ++ 6.0 และมีตัวแปรที่ประกอบด้วยค่านี้ในหน้าต่างการตรวจสอบการตรวจแก้จุดบกพร่อง ผนวก ", hr " (โดยไม่มีใบเสนอราคา) นั้นมี Visual c ++ที่แปลสำหรับคุณ
  10. ไลบรารีชนิดคืออะไร

    ไลบรารีชนิดจะคล้ายกับแฟ้มส่วนหัวของ C/c ++ ประกอบด้วยการ อินเตอร์เฟส วิธีการ และคุณสมบัติที่มีการเผยแพร่เซิร์ฟเวอร์ คุณสามารถ ดูไลบรารีชนิดกับตัวแสดงวัตถุ OLE/COM (Oleview.exe) ที่ มาพร้อมกับ c ++ Visual นี่คือรายการของชื่อแฟ้มไลบรารีชนิดสำหรับ Microsoft Office 95, 97 และ 2000:
    
           Office Application      | Type library
           ------------------------+----------------
           Word 95 and prior       | wb70en32.tlb
           Excel 95 and prior      | xl5en32.olb
           Powerpoint 95 and prior | Powerpoint.tlb
           Access 95 and prior     | msaccess.tlb
           Binder 95               | binder.tlb
           Schedule+               | sp7en32.olb
           Project                 | pj4en32.olb
           Team Manager            | mstmgr1.olb
           Word 97                 | msword8.olb
           Excel 97                | excel8.olb
           Powerpoint 97           | msppt8.olb
           Access 97               | msacc8.olb
           Binder 97               | msbdr8.olb
           Graph 97                | graph8.olb
           Outlook 97              | msoutl8.olb
           Outlook 98              | msoutl85.olb
           Word 2000               | msword9.olb
           Excel 2000              | excel9.olb
           Powerpoint 2000         | msppt9.olb
           Access 2000             | msacc9.olb
           Outlook 2000            | msoutl9.olb
           Word 2002               | msword.olb
           Excel 2002              | excel.exe
           Powerpoint 2002         | msppt.olb
           Access 2002             | msacc.olb
           Outlook 2002            | msoutl.olb 
    
    
    						
  1. รหัสการดำเนินการอัตโนมัติของฉันทำงานกับ Excel 95 แต่ล้มเหลวกับ Excel 97 สิ่งที่เกิดขึ้นหรือไม่

    อ็อบเจกต์ของ Excel ทำการเปลี่ยนแปลงที่สำคัญจากเวอร์ชัน 95 97 Excel 95 ใช้เมธอดและคุณสมบัติทั้งหมดของเพียงอย่างเดียว การใช้งาน IDispatch ซึ่งหมายถึง ว่า บ่อยครั้งคุณอาจเรียก วิธีที่ใช่สำหรับวัตถุ X จากวัตถุ Y ซึ่งไม่ได้ออกแบบที่ดี ดังนั้น ใน Office 97 แต่ละวัตถุได้ Idispatch ของตนเองแยกต่างหาก การใช้งาน ซึ่งหมายความว่า ที่ถ้าคุณขอเมธอดหรือคุณสมบัติจาก วัตถุ X จากวัตถุที่แยกต่างหาก Y คุณได้รับข้อผิดพลาด 0x80020003 -2147352573, "ไม่พบสมาชิก" เมื่อต้องการหลีกเลี่ยงข้อผิดพลาดนี้ คุณจำเป็นต้องทำ แน่ใจว่า อินเทอร์เฟซ IDispatch ต้นแบบที่คุณกำลังทำเรียกใช้จาก มีหนึ่ง semantically ถูกต้อง ดูความรู้ของ Microsoft ต่อไปนี้ บทความพื้นฐานสำหรับข้อมูลเพิ่มเติม:
    172108HOWTO: "ไม่พบสมาชิก" 0x80020003 ในการแก้ไขปัญหาข้อผิดพลาด
  2. ฉันกำลังทำงานอัตโนมัติสำหรับโปรแกรมประยุกต์อยู่ในหน่วยความจำหลังจากโปรแกรมของฉัน สิ้นสุดลง สิ่งที่เกิดขึ้นหรือไม่

    เป็นไปได้ เนื่องจากคุณลืมปล่อยที่ซื้อมาแล้ว อินเทอร์เฟซและคุณจะต้องติดตามลง ต่อไปนี้เป็นคำทั่วไป คำแนะนำ และสิ่งที่ต้องการค้นหา:

    • ถ้าคุณกำลังใช้ #import เป็นไปได้คุณไม่สามารถรันได้เข้าเป็นหนึ่งเดียวของบักการนับการอ้างอิงที่เกี่ยวข้องกับโปรแกรมนั้น บ่อยครั้ง บักสามารถทำงานได้รอบ ๆ แต่โดยปกติจะเป็นที่ต้องการใช้อย่างใดอย่างหนึ่ง ของทำงานโดยอัตโนมัติวิธีการอื่น ๆ #import ไม่ทำงานอย่างมีประสิทธิภาพ มีโปรแกรมประยุกต์ Office เนื่องจากไลบรารีชนิดและการใช้งานของ มีความซับซ้อน fairly ยัง เช่นปัญหาการตรวจนับการอ้างอิงได้ยาก การติดตามลงเนื่องจากเป็นจำนวนมากเรียก COM ระดับอินเตอร์เฟส behind-the-scenes เมื่อใช้ #import
    • ตรวจสอบดูถ้าคุณกำลังเรียกวิธีใด ๆ เช่นเปิด หรือสร้างใหม่ ที่ส่งคืนที่ IDispatch * (LPDISPATCH), และละเว้นการ return ค่า ถ้าคุณกำลัง แล้วคุณจะ abandoning อินเทอร์เฟซนี้ส่งคืน และจำเป็นต้องเปลี่ยนรหัสของคุณเพื่อให้คุณปล่อยเมื่อไม่มี จำเป็นต้องใช้อีกต่อไป
    • ค่อย ๆ ข้อคิดเห็นออกจากส่วนต่าง ๆ ของโค้ดของคุณจนกว่าปัญหานั้น หายไป แล้วเพิ่มกลับ judiciously เพื่อติดตามลงที่ใด ปัญหาเริ่มต้น
    • หมายเหตุว่า โปรแกรมประยุกต์บางโปรแกรมจะยังคงทำงานถ้ามีผู้ใช้ "touched" แอพลิเคชัน ถ้าปัญหานี้เกิดขึ้นในขณะที่ทำโดยคุณกำลังอัตโนมัติ แล้ว แอพลิเคชันจะอาจยังคงทำงานอยู่ภายหลัง ที่ โปรแกรมประยุกต์ของ office มีคุณสมบัติ "UserControl" ในแอพลิเคชัน วัตถุที่คุณสามารถอ่าน/เขียนเพื่อเปลี่ยนลักษณะการทำงานนี้
    • โปรแกรมประยุกต์บางโปรแกรมจะตัดสินใจยัง อยู่ถ้าเพียงพอในการทำงาน ติดต่อผู้ใช้ "การกระทำ" เกิดขึ้น ถ้าคุณกำลัง intending โปรแกรมประยุกต์จบการทำงาน เรียกเมธอด Quit() ของแล้วในแอพลิเคชัน วัตถุ การปิด Word จะคำนึงถึงการอ้างอิงของนับเมื่อใด จบการทำงานจะเรียกว่า นี้ไม่ทำงาน COM Excel อย่างไรก็ตาม จะซ่อนตัวเอง แต่ยังคงทำงานอยู่จนกว่าทั้งหมดถูกต้องเพียงค้างชำระ อินเทอร์เฟซจะนำออกใช้ โดยทั่วไป คุณควรปล่อยได้ทั้งหมด การอ้างอิงที่ค้างชำระ และเฉพาะโทร Quit() ถ้าคุณต้องการ โปรแกรมประยุกต์จบการทำงาน
  3. ฉันทราบว่าสิ่งที่ฉันต้องการทำเป็นผู้ใช้โปรแกรมประยุกต์ Office แต่อย่างไรนี้ทางโปรแกรมผ่านระบบอัตโนมัติหรือไม่

    สิ่งที่คุณสนใจคือ อะไรวัตถุ วิธีการ และคุณสมบัติของคุณ จำเป็นต้องใช้ วิธีที่ดีที่สุดในการเรียนรู้วิธีการนำโมเดลวัตถุของ Word, Excel และ Powerpoint ขึ้นอยู่กับสิ่งที่คุณต้องการทำเป็นผู้ใช้ เป็น เมื่อต้องการใช้ตัวบันทึกของแมโคร เพียงแค่เลือก Macro\ 'ระเบียนแมโคใหม่' จากนั้น จากเมนูเครื่องมือ ดำเนินงานที่คุณกำลังสนใจ นั้นเลือก Macro\ 'หยุดการบันทึกไว้' เมื่อคุณเสร็จสิ้นการบันทึก เลือก Macro\Macros จากเมนูเครื่องมือ เลือกแมโครที่คุณบันทึก จาก นั้นคลิกแก้ไข ซึ่งจะนำคุณไปยังรหัส VBA สร้างขึ้นซึ่งจะทำให้สำเร็จนั้น งานที่คุณต้องบันทึก ระลึกแมโครที่บันทึกไว้จะไม่ดีที่สุด รหัสที่เป็นไปได้ในกรณีส่วนใหญ่ แต่ของไม่ดีมากสำหรับการรวดเร็ว ตัวอย่าง
  4. ฉันสามารถทำให้โปรแกรมประยุกต์ Office ที่ฝังตัวหรือไม่

    จริง ๆ เทคนิคในการเรียกดูตัวชี้ IDispatch: ซึ่งแสดงไว้ใน Visual c ++เทคนิคบันทึก 39 (TN039) ดู Microsoft ต่อไปนี้ บทความฐานความรู้ของตัวอย่างแบบทีละขั้นตอน:
    184663HOWTO: ฝัง และการทำให้แผ่นงาน Microsoft Excel ด้วย MFC
  5. ฉันเข้าถึงคุณสมบัติเอกสารของฉันในเอกสาร Office ได้อย่างไร

    คุณสมบัติเอกสารจะสามารถเข้าถึงได้ผ่านระบบอัตโนมัติ หรือ โดยตรงผ่านทาง IPropertyStorage บทความฐานความรู้ของ Microsoft ต่อไปนี้สาธิตวิธีแต่ละ:
    179494HOWTO: ใช้ระบบอัตโนมัติเพื่อดึงคุณสมบัติเอกสารที่มีอยู่ภายใน
    186898HOWTO: อ่านเอกสารประกอบคุณสมบัติโดยตรง ด้วย VC ++

คุณสมบัติ

หมายเลขบทความ (Article ID): 196776 - รีวิวครั้งสุดท้าย: 28 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Project 2000 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Outlook 97 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
Keywords: 
kbsweptvs2008 kbautomation kbmt KB196776 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:196776

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

 

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