การผูกสำหรับเซิร์ฟเวอร์การดำเนินการอัตโนมัติของ Office ด้วย Visual .NET c#

การสนับสนุนสำหรับ Office 2003 สิ้นสุดลงแล้ว

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

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

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:302902
บทความนี้ถูกเก็บถาวรแล้วเนื้อหาของบทความจึงถูกนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก
สรุป
เมื่อคุณทำให้โปรแกรมประยุกต์เช่น Microsoft Office โปรแกรมประยุกต์ โทรศัพท์ไปยังคุณสมบัติและเมธของ Office วัตถุของโปรแกรมประยุกต์ต้องเชื่อมต่อบางวิธีไปยังวัตถุเหล่านั้น โดยทั่วไปคือเรียกกระบวนการของคุณสมบัติการเชื่อมต่อและวิธีการเรียกไปยังวัตถุที่ใช้งานคุณสมบัติและเมธเหล่านั้นผูก. ใน Visual c# สองชนิดของการผูกที่พร้อมใช้งานอยู่รวมก่อนหน้าและรวมภายหลัง. ชนิดของการผูกที่คุณเลือกอาจส่งผลต่อด้านจำนวนมากของโปรแกรมของคุณ รวมทั้งประสิทธิภาพ ความยืดหยุ่น และ maintainability

บทความนี้อธิบาย และเปรียบเทียบการรวมก่อนหน้า และล่าช้าไคลเอ็นต์ของ Visual c# ระบบอัตโนมัติ และแสดงตัวอย่างรหัสที่แสดงให้เห็นถึงชนิดรวมทั้งสอง

back to the top

รวมก่อนหน้า

ด้วยการรวมก่อนหน้า Visual c# ใช้ชนิดข้อมูลที่พร้อมใช้งานเกี่ยวกับการ Office แอพพลิเคชันสอบถามเพื่อผูกโดยตรงไปยังวิธีหรือคุณสมบัติที่ต้องการใช้ งาน คอมไพเลอร์สามารถดำเนินการชนิด และไวยากรณ์ตรวจสอบเพื่อให้มั่นใจได้ผ่านการว่า หมายเลขที่ถูกต้องและชนิดของพารามิเตอร์เมธอดหรือคุณสมบัติ และค่าที่ส่งคืนจะเป็นชนิดที่คาดไว้ เนื่องจากงานน้อยกว่าจะจำเป็นต้องใช้ในขณะที่ดำเนินการเพื่อทำให้การเรียกไปยังคุณสมบัติหรือเมธอด รวมก่อนหน้าเป็นบางครั้งเร็วกว่า อย่างไรก็ตาม ถึงแม้ว่าการรวมก่อนหน้าอาจจะเร็วกว่า ผลต่างของประสิทธิภาพการทำงานเมื่อเปรียบเทียบกับการรวมภายหลังจะมัก negligible

ก่อนการผูกมี disadvantage รองที่ทำให้ที่ดังกล่าวสามารถเกิดปัญหาความเข้ากันได้รุ่นที่เป็นไปได้ ตัวอย่างเช่น สมมติว่า เซิร์ฟเวอร์ Automation ที่เช่น Microsoft Excel 2002 แนะนำใหม่วิธีหรือคุณสมบัติที่ไม่ใช้งานใน Excel 2000 หรือทำการเปลี่ยนแปลงคุณสมบัติที่มีอยู่หรือเมธอด การเปลี่ยนแปลงเหล่านี้อาจเปลี่ยนแปลงเค้าโครงแบบไบนารีของวัตถุ และทำให้เกิดปัญหากับโปรแกรมที่ Visual c# ประยุกต์ที่ใช้ข้อมูลชนิดของ Excel 2002 เพื่อทำให้ Excel 2000 แนะนำเพื่อหลีกเลี่ยงปัญหานี้ได้ ด้วยการรวมก่อนหน้า นั้นโดยทั่วไปให้ที่ คุณต้องใช้ข้อมูลชนิดสำหรับโปรแกรมประยุกต์ Office ที่คุณต้องการสนับสนุนเมื่อคุณพัฒนา และไคลเอนต์ทำงานอัตโนมัติของทดสอบ รุ่นแรกสุด

ขั้นตอนต่อไปนี้แสดงให้เห็นถึงวิธีการสร้างการทำงานอัตโนมัติไคลเอนต์ที่ใช้การรวมก่อนหน้า โปรดสังเกตว่า ตามที่แสดงขั้นตอน ก่อนมีการผูกต้องคุณสามารถอ้างอิงไลบรารีชนิดสำหรับไคลเอ็นต์การทำงานอัตโนมัติ

back to the top

สร้างการทำงานอัตโนมัติไคลเอนต์ที่ใช้การรวมก่อนหน้า

  1. เริ่ม Microsoft Visual Studio .NET ในการแฟ้ม:เมนู คลิกใหม่แล้ว คลิกProject. เลือกแอพลิเคชันของ windowsจากชนิดโครงการ c# แสดงผล Form1 จะถูกสร้างขึ้นตามค่าเริ่มต้น
  2. เพิ่มการอ้างอิงไปยังการไลบรารีวัตถุ Microsoft Excel. โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. ในการProjectเมนู คลิกเพิ่มการอ้างอิง.
    2. ในการcomแท็บ ค้นหานี้Microsoft Excel การไลบรารีวัตถุคลิกเลือก.

      หมายเหตุ:office 2003 มีแอสเซมบลี Interop หลัก (PIAs) office XP ไม่สามารถรวม PIAs แต่จะสามารถดาวน์โหลดสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Office XP PIAs คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
      328912แอสเซ Microsoft Office XP หลัก interop มบลี (PIAs) พร้อมใช้งานสำหรับการดาวน์โหลด
    3. คลิกตกลงในการเพิ่มการอ้างอิงกล่องโต้ตอบเพื่อยอมรับการเลือกของคุณ ถ้าคุณได้รับการพรอมต์เพื่อสร้าง wrappers สำหรับไลบรารีที่คุณเลือก คลิกใช่.
  3. ในการมุมมองเมนู การเลือกกล่องเครื่องมือเมื่อต้องการแสดงในกล่องเครื่องมือ และเพิ่มปุ่มไป Form1
  4. คลิกสองครั้งbutton1. หน้าต่างรหัสสำหรับแบบฟอร์มปรากฏขึ้น
  5. ในหน้าต่างโค้ด ให้แทนที่โค้ดต่อไปนี้
    private void button1_Click(object sender, System.EventArgs e){}					
    with::
    private void button1_Click(object sender, System.EventArgs e){	Excel.Application objApp;	Excel._Workbook objBook;	Excel.Workbooks objBooks;	Excel.Sheets objSheets;	Excel._Worksheet objSheet;	Excel.Range range;	try	{		// Instantiate Excel and start a new workbook.		objApp = new Excel.Application();		objBooks = objApp.Workbooks;		objBook = objBooks.Add( Missing.Value );		objSheets = objBook.Worksheets;		objSheet = (Excel._Worksheet)objSheets.get_Item(1);		range = objSheet.get_Range("A1", Missing.Value);		range.set_Value(Missing.Value, "Hello, World!" );		//Return control of Excel to the user.		objApp.Visible = true;		objApp.UserControl = true;	}	catch( Exception theException ) 	{		String errorMessage;		errorMessage = "Error: ";		errorMessage = String.Concat( errorMessage, theException.Message );		errorMessage = String.Concat( errorMessage, " Line: " );		errorMessage = String.Concat( errorMessage, theException.Source );		MessageBox.Show( errorMessage, "Error" );	}}  					
  6. เลื่อนไปที่ด้านบนของหน้าต่างรหัส เพิ่มบรรทัดต่อไปนี้จุดสิ้นสุดของรายการการใช้directives:
    using System.Reflection;using Excel = Microsoft.Office.Interop.Excel;					
back to the top

รวมภายหลัง

contrast การรวมก่อนหน้า ไม่มีการผูกรอจนกว่าเวลาที่ใช้ในการผูกคุณสมบัติและวิธีเรียกไปยังวัตถุเหล่านั้น เมื่อต้องการทำเช่นนี้ วัตถุปลายทางต้องใช้อินเทอร์เฟซ COM พิเศษ:IDispatch. กระบวนการIDispatch::GetIDsOfNamesวิธีที่อนุญาตให้ Visual c# เพื่อ interrogate วัตถุเกี่ยวกับวิธีการใดและคุณสมบัติสนับสนุนและIDispatch::Invokeวิธีแล้วให้ Visual c# การเรียกวิธีและคุณสมบัติเหล่านั้น รวมภายหลังในนี้ต้องมีประโยชน์ของการลบบางส่วนของการอ้างอิงของรุ่นที่อยู่ชั้น ด้วยการรวมก่อนหน้า อย่างไรก็ตาม มันได้ข้อเสียของการลบเช็คเวลาคอมไพล์บนความสมบูรณ์ของรหัสการดำเนินการอัตโนมัติ รวม ทั้งไม่ให้คุณลักษณะ Intellisense ที่สามารถทำให้เกิดการเรียกใช้ clues เพื่อแก้ไขการเรียกวิธีและคุณสมบัติ

เมื่อต้องการใช้รวมภายหลังใน Visual c# ใช้System.Type.InvokeMemberวิธีการ เรียกวิธีการนี้IDispatch::GetIDsOfNamesและIDispatch::Invokeเมื่อต้องการผูกกับวิธีการและคุณสมบัติของเซิร์ฟเวอร์ Automation

back to the top

สร้างการทำงานอัตโนมัติไคลเอนต์ที่ใช้การรวมภายหลัง

  1. เริ่ม Microsoft Visual Studio .NET ในการแฟ้ม:เมนู คลิกใหม่แล้ว คลิกProject. เลือกแอพลิเคชันของ windowsจากชนิดโครงการ c# แสดงผล Form1 จะถูกสร้างขึ้นตามค่าเริ่มต้น
  2. ในการมุมมองเมนู การเลือกกล่องเครื่องมือเมื่อต้องการแสดงในกล่องเครื่องมือ และเพิ่มปุ่มไป Form1
  3. คลิกสองครั้งbutton1. หน้าต่างรหัสสำหรับแบบฟอร์มปรากฏขึ้น
  4. ในหน้าต่างโค้ด ให้แทนที่โค้ดต่อไปนี้
    private void button1_Click(object sender, System.EventArgs e){}						
    with::
    private void button1_Click(object sender, System.EventArgs e){	object objApp_Late;	object objBook_Late;	object objBooks_Late;	object objSheets_Late;	object objSheet_Late;	object objRange_Late;	object[] Parameters;	try	{		// Get the class type and instantiate Excel.		Type objClassType; 		objClassType = Type.GetTypeFromProgID("Excel.Application"); 		objApp_Late = Activator.CreateInstance(objClassType);		//Get the workbooks collection.		objBooks_Late = objApp_Late.GetType().InvokeMember( "Workbooks", 		BindingFlags.GetProperty, null, objApp_Late, null );		//Add a new workbook.		objBook_Late = objBooks_Late.GetType().InvokeMember( "Add", 			BindingFlags.InvokeMethod, null, objBooks_Late, null );		//Get the worksheets collection.		objSheets_Late = objBook_Late.GetType().InvokeMember( "Worksheets",			BindingFlags.GetProperty, null, objBook_Late, null );		//Get the first worksheet.		Parameters = new Object[1];		Parameters[0] = 1;		objSheet_Late = objSheets_Late.GetType().InvokeMember( "Item", 			BindingFlags.GetProperty, null, objSheets_Late, Parameters );		//Get a range object that contains cell A1.		Parameters = new Object[2];		Parameters[0] = "A1";		Parameters[1] = Missing.Value;		objRange_Late = objSheet_Late.GetType().InvokeMember( "Range",			BindingFlags.GetProperty, null, objSheet_Late, Parameters );		//Write "Hello, World!" in cell A1.		Parameters = new Object[1];		Parameters[0] = "Hello, World!";		objRange_Late.GetType().InvokeMember( "Value", BindingFlags.SetProperty, 			null, objRange_Late, Parameters );		//Return control of Excel to the user.		Parameters = new Object[1];		Parameters[0] = true;		objApp_Late.GetType().InvokeMember( "Visible", BindingFlags.SetProperty,			null, objApp_Late, Parameters );		objApp_Late.GetType().InvokeMember( "UserControl", BindingFlags.SetProperty,			null, objApp_Late, Parameters );	}	catch( Exception theException ) 	{		String errorMessage;		errorMessage = "Error: ";		errorMessage = String.Concat( errorMessage, theException.Message );		errorMessage = String.Concat( errorMessage, " Line: " );		errorMessage = String.Concat( errorMessage, theException.Source );		MessageBox.Show( errorMessage, "Error" );	}}					
  5. เลื่อนไปที่ด้านบนของหน้าต่างรหัส เพิ่มบรรทัดต่อไปนี้จุดสิ้นสุดของรายการการใช้directives:
    using System.Reflection; 					
back to the top
ข้อมูลอ้างอิง
สำหรับข้อมูลเพิ่มเติม โปรดแวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft Developer Network (MSDN)::
Microsoft Office การพัฒนากับ Visual Studio
.aspx http://msdn2.microsoft.com/en-us/library/aa188489 (office.10)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรวม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
245115ใช้การรวมก่อนหน้าและการรวมภายหลังในการทำงานอัตโนมัติ
244167เขียนเครื่องไคลเอนต์ในการทำงานอัตโนมัติสำหรับหลายรุ่นของ Office
247579ใช้ DISPID รวมถึงการทำให้โปรแกรมประยุกต์ Office เมื่อใดก็ ตามที่เป็นไปได้
back to the top
รวมก่อนหน้าล่าช้ารวมก่อนหน้าถูกผูกไว้ก่อนหน้าขอบล่าช้าขอบ Excel Word PowerPoint Outlook ACC2003 XL2003 PPT2003 WD2003

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 302902 - การตรวจสอบครั้งสุดท้าย: 12/06/2015 03:44:32 - ฉบับแก้ไข: 3.0

Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition, Microsoft Excel 2002 Standard Edition, Microsoft Office PowerPoint 2003, Microsoft PowerPoint 2002 Standard Edition, Microsoft Word 2002 Standard Edition

  • kbnosurvey kbarchive kbpia kbautomation kbhowtomaster kbmt KB302902 KbMtth
คำติชม