ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

สรุป

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

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

สารบัญ

  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 Word การการสะกดและไวยากรณ์ตรวจสอบความสามารถในการเข้าไปในโปรแกรมประยุกต์ของคุณโดยไม่มี Microsoft Word ที่มองเห็นได้โดยผู้ใช้ของคุณ แม้ว่าคุณสามารถใช้ Microsoft Excel การสร้างแผนภูมิ พิมพ์ และข้อมูลการวิเคราะห์เครื่องมือทั้งหมด เทคโนโลยีนี้สามารถทำให้ง่ายขึ้นอย่างมาก และความเร็วของการพัฒนา

  2. ฉันเพิ่งเริ่มทำงานอัตโนมัติ ที่ฉันสามารถค้นหาทรัพยากรที่ดีในการเรียนรู้เพิ่มเติมได้อย่างไร 24 บทของธิติ Kruglinski "ภายใน Visual C++" (ISBN:1-57231-565 - 2) ให้ภาพรวมทางทั่วไปรวมทั้งตัวอย่างที่ยอดเยี่ยม นอกจากนี้ ฐานความรู้ของ Microsoft เป็นแหล่งข้อมูลดี บทความนี้เองเป็นจุดเริ่มต้นดี และคุณสามารถค้นหาข้อมูลอ้างอิงที่เฉพาะเจาะจงมากขึ้นในบทความในฐานความรู้ของ Microsoft ต่อไปนี้:

    ค้นหาทรัพยากรศึกษา OLE Automationถ้าคุณต้องการเรียนรู้ตามตัวอย่าง โปรดดูบทความในฐานความรู้ของ Microsoft ต่อไปนี้:

    HOWTO ใช้ MFC เพื่อทำให้เป็นอัตโนมัติ Excel & สร้าง/รูปแบบสมุดงานใหม่

  3. มีวิธีอื่นที่ฉันสามารถใช้ระบบอัตโนมัติหรือไม่ มีวิธีพื้นฐานสามที่คุณสามารถใช้ระบบอัตโนมัติ: MFC, #import และ C/c ++:

    • ด้วย MFC ใช้ ClassWizard Visual C++ เพื่อสร้าง "คลาส wrapper" จากไลบรารีชนิด Microsoft Office คลาสที่เหล่านี้ ตลอดจนคลาสอื่น ๆ MFC เช่น COleVariant, COleSafeArray, COleException ทำงานของระบบอัตโนมัติ วิธีนี้มักจะขอแนะนำทางอื่น ๆ และตัวอย่างฐานความรู้ของ Microsoft ส่วนใหญ่ใช้ MFC

    • #import ไดเรกทีฟแบบใหม่ที่มีสถานะเป็นพร้อมใช้งานกับ 5.0 Visual C++ สร้าง VC ++ "ตัวชี้สมาร์ท" จากไลบรารีชนิดที่ระบุ จะมีประสิทธิภาพมาก แต่มักจะไม่แนะนำเนื่องจาก มีการอ้างอิง - ตรวจนับปัญหาที่จะเกิดขึ้นเมื่อใช้กับโปรแกรมประยุกต์ของ Microsoft Office

    • ระบบอัตโนมัติสำหรับการ C/c ++เป็นส่วนใหญ่ยาก แต่บางครั้งจำเป็นเพื่อหลีกเลี่ยงค่าโสหุ้ยกับ MFC หรือปัญหาเกี่ยวกับ #import ทั่วไป คุณทำงานกับ APIs ดังกล่าวเป็น CoCreateInstance() และ COM อินเตอร์เฟสเช่น IDispatch และ IUnknown

    เป็นสิ่งสำคัญที่ต้องหมายเหตุว่า มีความแตกต่างบางเล็กระหว่างการทำงานอัตโนมัติจาก c ++เมื่อเปรียบเทียบกับ C แบบธรรมดา เพราะ COM ถูกกำหนดไว้รอบ ๆ คลาส c ++ สำหรับข้อมูลเพิ่มเติม โปรดดูบทความใน Microsoft Knowledge Base สำหรับเป็นตัวอย่างของ C ต่อไปนี้:

    HOWTO: ใช้ OLE Automation จากโปรแกรมประยุกต์ C

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

  5. วิธีทำฉันแนบกับอินสแตนซ์ของโปรแกรมประยุกต์ Office ที่กำลังทำงานอยู่หรือไม่ ใช้ GetActiveObject() API เซิร์ฟเวอร์ automation ที่ลงทะเบียนตัวเองในการดูสีลอก (เรียกใช้ออบเจ็กต์ตาราง), ผ่านทาง API แบบ RegisterActiveObject() ไคลเอนต์ automation สามารถเรียกใช้ในอินสแตนซ์ที่กำลังทำงานอยู่กับรหัสเช่น:

          // 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 ใน คุณสามารถทำซ้ำในการดูสีลอกสำหรับแต่ละอินสแตนซ์แต่ละ แต่โปรแกรมประยุกต์ Office ไม่ลงทะเบียนตนเองถ้าอินสแตนซ์อื่นอยู่แล้วในการดูสีลอกเนื่องจากมอนิเกอร์ตัวเองไว้เสมอ (จะไม่สามารถจำแนกต่อไป) ซึ่งหมายความ ว่า คุณไม่สามารถแนบกับอินสแตนซ์ใด ๆ ยกเว้นตัวแรก อย่างไรก็ตาม เนื่องจากในโปรแกรมประยุกต์ Office ยังทะเบียนเอกสารของตนในการดูสีลอก คุณสามารถเรียบร้อยแล้วแนบกับอินสแตนซ์อื่น โดยการดูสีลอกค้นหาเอกสารเฉพาะ แนบ แล้ว การรับวัตถุโปรแกรมประยุกต์จากนั้นทำซ้ำ ไม่มีรหัสบางอยู่ในบทความฐานความรู้ของ Microsoft ต่อไปนี้สำหรับการดูสีลอกทำซ้ำ และค้นหาชื่อเอกสาร:

    HOWTO: รับ 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:

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

  8. รหัสการดำเนินการอัตโนมัติของฉันช้าเกินไป วิธีสามารถฉันเร็วหรือไม่ สาเหตุทั่วไปของปัญหาความเร็วในการทำงานอัตโนมัติกับการอ่าน และเขียนข้อมูลซ้ำได้ นี่เป็นเรื่องปกติสำหรับไคลเอนต์ทำงานอัตโนมัติใน Excel อย่างไรก็ตาม คนส่วนใหญ่ไม่ทราบว่า ข้อมูลนี้มักจะสามารถเขียน หรืออ่านได้ทั้งหมดในครั้งเดียวโดยใช้ SAFEARRAY ดูบทความฐานความรู้ของ Microsoft ต่อไปนี้สำหรับข้อมูลเพิ่มเติมและข้อมูลตัวอย่าง:

    HOWTO: ใช้ MFC เพื่อทำให้เป็นอัตโนมัติ Excel และกรอกข้อมูลช่วงกับอาร์เรย์

    HOWTO: ใช้ MFC เพื่อทำให้เป็นอัตโนมัติ Excel & รับอาร์เรย์จากช่วง

    HOWTO: ใช้ MFC เพื่อทำให้เป็นอัตโนมัติ Excel และสร้าง/รูปแบบสมุดงานใหม่นอกจากนี้ จึงควรชี้ว่า ใช้คลิปบอร์ดสามารถบางครั้งการปรับปรุงประสิทธิภาพการทำงานออก ตัวอย่างเช่น คุณสามารถคัดลอกข้อมูลของคุณไปยังคลิปบอร์ด ให้ใช้ระบบอัตโนมัติเพื่อแจ้งเซิร์ฟเวอร์เมื่อต้องการวางไว้ หรือกลับ กัน บอกเซิร์ฟเวอร์เพื่อคัดลอกคลิปบอร์ด และวางลงในโปรแกรมประยุกต์ของคุณ

  9. ค่าเหล่านี้ข้อผิดพลาดที่ใหญ่มาก เช่น-2147352573 หรือค่าเฉลี่ย 0x80030002 ทำอะไรได้บ้าง ค่าเหล่านี้จะถูกเรียกว่า HRESULTs และมีกำหนดใน winerror.h หมายเลขมีขนาดใหญ่ดังนั้นเนื่องจากบิตแรกแสดงว่าเป็นผลลัพธ์ผิดพลาดหรือไม่ คุณสามารถใช้ยูทิลิตี ErrLook.Exe ที่มาพร้อมกับ Visual C++ การแปลตัวเลขเหล่านี้เป็นคำอธิบายที่มีความหมาย ถ้าคุณต้องการดูคำอธิบายสำหรับข้อผิดพลาดทางการเขียนโปรแกรม คุณสามารถใช้ FormatMessage() API ดูบทความฐานความรู้ของ Microsoft ต่อไปนี้สำหรับข้อมูลเพิ่มเติมและตัวอย่างในการใช้ของ FormatMessage():

    ข้อมูล: การแปลข้อผิดพลาดระบบอัตโนมัติสำหรับ VB/VBA

    ตัวอย่าง : Decode32 และข้อผิดพลาด OLE Decode16 รหัสเครื่องมือถอดรหัสหมายเหตุ: ถ้าคุณกำลังใช้ Visual C++ 6.0 และมีตัวแปรที่ประกอบด้วยค่านี้ได้ในหน้าต่างการตรวจสอบการตรวจแก้จุดบกพร่อง ผนวก ", hr " (โดยไม่ใส่เครื่องหมายอัญประกาศ) เพื่อให้มี Visual C++ แปลนั้นสำหรับคุณ

  10. ไลบรารีชนิดคืออะไร ไลบรารีชนิดจะคล้ายคลึงกับแฟ้มส่วนหัวของ C/c ++ ประกอบด้วยอินเทอร์เฟส วิธี และคุณสมบัติที่มีการเผยแพร่เซิร์ฟเวอร์ คุณสามารถดูไลบรารีชนิดที่ มีตัวแสดงวัตถุ OLE/COM (Oleview.exe) ที่มาพร้อมกับ Visual C++ นี่คือรายการของชื่อแฟ้มในไลบรารีชนิดสำหรับ 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 ต่อไปนี้สำหรับข้อมูลเพิ่มเติม:

    HOWTO: "ไม่พบสมาชิก" 0x80020003 การแก้ไขปัญหาข้อผิดพลาด

  2. แอพลิเคชันกำลังทำโดยอัตโนมัติอยู่ในหน่วยความจำหลังจากเสร็จสิ้นการโปรแกรมของฉัน เกิดอะไรขึ้น น่า ทั้งนี้เนื่องจากคุณได้ลืมที่จะนำออกใช้อินเทอร์เฟซที่ถูกซื้อมา และคุณจำเป็นต้องติดตามดังกล่าวลง ต่อไปนี้คือบางคำแนะนำทั่วไป และสิ่งที่ต้องค้นหา:

    • ถ้าคุณกำลังใช้ #import ไม่น่าคุณไม่สามารถเรียกใช้เบอร์บักการตรวจนับอ้างอิงที่เชื่อมโยงอยู่ด้วย บ่อยครั้งบักสามารถทำรอบ ๆ แต่โดยปกติแล้วจะเป็นที่ต้องการใช้วิธีการอย่างใดอย่างหนึ่งวิธีดำเนินการอัตโนมัติอื่น ๆ #import ไม่ทำงานอย่างมีประสิทธิภาพกับโปรแกรมประยุกต์ Office เนื่องจากไลบรารีชนิดและการใช้งานค่อนข้างซับซ้อน นอกจากนี้ ปัญหาการตรวจนับอ้างอิงดังกล่าวจะยากต่อการติดตามลงได้เนื่องจากการเรียก COM อินเทอร์เฟซระดับมากมาย behind-the-scenes เมื่อใช้ #import

    • ตรวจสอบเพื่อดูถ้าคุณกำลังเรียกใด ๆ วิธีการ เช่นเปิด สร้าง ที่ส่งกลับค่าการ IDispatch * (LPDISPATCH), และละเว้นค่าที่ส่งคืน ถ้าคุณกำลัง แล้วคุณจะ abandoning อินเทอร์เฟซนี้ส่งคืน และจะต้องเปลี่ยนรหัสของคุณเพื่อให้คุณนำออกใช้เมื่อจำเป็น

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

    • หมายเหตุว่า โปรแกรมประยุกต์บางโปรแกรมจะยังคงทำงานอยู่ถ้าผู้ใช้มี "touched" แอพลิเคชัน ถ้าเหตุการณ์นี้เกิดขึ้นในขณะที่คุณทำโดยอัตโนมัติ แล้วแอพลิเคชันจะอาจจะยังคงทำงานหลังจากนี้ โปรแกรมประยุกต์ Office ที่มีคุณสมบัติ "UserControl" บนแอพลิเคชันออปเจ็กต์ที่คุณสามารถอ่าน/เขียนเพื่อเปลี่ยนลักษณะการทำงานนี้

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

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

  4. ฉันสามารถทำโปรแกรมประยุกต์ Office ที่ฝังตัวหรือไม่ จริง ๆ เคล็ดลับคือการรับตัวชี้ IDispatch: นี้จะกำหนดเป็นแบบ Visual C++ ทางเทคนิคหมายเหตุ 39 (TN039) ดูบทความฐานความรู้ของ Microsoft ต่อไปนี้สำหรับตัวอย่างแบบทีละขั้นตอน:

    HOWTO: ฝัง และทำแผ่นงาน Microsoft Excel ด้วย MFC

  5. วิธีทำเข้าคุณสมบัติเอกสารของฉันในเอกสาร Office คุณสมบัติของเอกสารจะสามารถเข้าถึงได้โดย ผ่าน Automation หรือโดยตรงโดย ใช้ IPropertyStorage บทความฐานความรู้ของ Microsoft ต่อไปนี้สาธิตวิธีแต่ละวิธี:

    HOWTO: ใช้ระบบอัตโนมัติในการดึงข้อมูลคุณสมบัติเอกสารที่มีอยู่ภายใน

    HOWTO: อ่านคุณสมบัติเอกสารผสม ด้วย VC ++ โดยตรง

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

ข้อมูลนี้เป็นประโยชน์หรือไม่

คุณพึงพอใจกับคุณภาพภาษาเพียงใด
สิ่งที่ส่งผลต่อประสบการณ์ใช้งานของคุณ
เมื่อกดส่ง คำติชมของคุณจะถูกใช้เพื่อปรับปรุงผลิตภัณฑ์และบริการของ Microsoft ผู้ดูแลระบบ IT ของคุณจะสามารถรวบรวมข้อมูลนี้ได้ นโยบายความเป็นส่วนตัว

ขอบคุณสำหรับคำติชมของคุณ!

×