Visual C# .NET ile Office otomasyon sunucuları için bağlama

Makale çevirileri Makale çevirileri
Makale numarası: 302902 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bir Microsoft Office gibi bir uygulamanın hangi koşullarda otomatikleştirmek uygulama, uygulama nesneleri bazı nesneleri şekilde bağlanmalıdır arama özellikleri ve yöntemleri ofisinin. Bağlanan özellik ve yöntem çağrıları için bu özellikleri ve yöntemleri uygulayan nesnelerin işlemi genellikle bağlama olarak da adlandırılır. Visual C# ile kullanılabilen iki bağlamanın erken bağlama ve geç bağlama türleridir. Seçtiğiniz bağlama türü programınızı yaşatılabilirlik performansı ve esnekliği de dahil olmak üzere birçok yönünü etkileyebilir.

Bu makalede açıklar ve Visual C# Otomasyon istemcilerinin önceki ve geç bağlama karşılaştırır ve her iki türdeki bağlama gösteren kod örnekleri sağlar.

Erken bağlama

Erken bağlama ile Visual C# hakkında Office doğrudan yöntemleri veya özellikleri kullanması gereken uygulama söz konusu kullanılabilir tür bilgileri kullanır. Derleyici türü gerçekleştirebilir ve sözdizimi doğru numarayı ve parametre türü bir yöntem veya özellik geçirildi ve döndürülen değer, beklenen türde olacağını denetler. Daha az çalışma zamanında bir özellik veya yöntem çağrısı yapmak için gerekli olduğundan, erken bağlama bazen daha hızlı, erken bağlama daha hızlı olabilir, ancak bununla birlikte, geç bağlamaya karşılaştırıldığında performans genellikle gözardı güncelleştirileceğidir.

Erken bağlama küçük olumsuz yanı, olası sürüm uyumluluk sorunlarına neden bulunmuyor. Örneğin, Microsoft Excel 2002 gibi bir Otomasyon sunucusu bir yeni bir yöntem veya özellik, Excel 2000'de ulaşılamıyor ya da bir varolan bir özelliği veya yöntemi için bir değişiklik yapar tanıtır varsayalım. Bu değişiklikler, nesnesinin ikili düzenini değiştirmek ve Excel 2000 otomatikleştirmek için Excel 2002 tür bilgileri kullanan bir Visual C# uygulama sorunlara neden. Erken bağlama ile ilgili bu sorunun oluşmaması için <a0></a0>, genellikle tür bilgileri geliştirmek ve otomasyon istemciniz sınama desteklemek istediğiniz Office uygulamasının en eski sürümü için kullanacağınız önerilir.

Aşağıdaki adımlarda, erken bağlama kullanan bir otomasyon istemci nasıl gösterilmektedir. Adımları göstermek gibi erken bağlama, otomasyon istemci için tür kitaplığına başvuru gerektirir, unutmayın.

Erken bağlama kullanan bir Otomasyon istemcisi oluştur

  1. Microsoft Visual Studio .NET'i başlatın. Dosya menüsünde Yeni'yi tıklatın ve Project ' ı tıklatın. Visual C# Projects türlerinden Windows Application ' ı seçin. Varsayılan olarak, Form1 oluşturulur.
  2. Microsoft Excel nesne kitaplığı ' na bir başvuru ekleyin. Bunu yapmak için şu adımları izleyin:
    1. Proje) menüsünde Add Reference ' ı tıklatın.
    2. COM sekmesinde, Microsoft Excel nesne kitaplığı ' nı bulun ve Seç ' i tıklatın.

      Not Office 2003 Primary ınterop Assemblies (Pıa) içerir. Office XP Pıa içermez, ancak bunlar yüklenebilir. Office XP Pıa hakkında'ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
      328912Microsoft Office XP ana birlikte çalışma derlemeleri (PIA) karşıdan yüklenebilir
    3. Seçimlerinizi kabul etmek için Tamam <a0>Başvuru Ekle</a0> iletişim kutusunda tıklatın. Seçtiğiniz kitaplıklar için sar?c?lar? oluşturmak isteyen bir ileti alırsanız, Evet ' i tıklatın.
  3. Görünüm menüsünden araç kutusunu görüntülemek için araç seçin ve Form1'e bir düğme ekleyin.
  4. Button1</a1> çift tıklatın. Formun kod penceresi görüntülenir.
  5. Kod penceresinde aşağıdaki kodu
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    ile:
    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. <a0>Kod</a0> penceresinin en üstüne gidin. Kullanma yönergeleri listesinin sonuna aşağıdaki satırı ekleyin:
    using System.Reflection;
    using Excel = Microsoft.Office.Interop.Excel;
    					

Geç bağlama

Özellik ve yöntem çalıştırma, nesnelere çağrı erken bağlama aksine, geç bağlama bekler. Bunu yapmak için <a0></a0>, hedef nesne özel bir COM arabirimini uygulamalıdır: ıdispatch. Visual C hangi yöntemleri ve özellikleri desteklediği ilgili nesne interrogate için # IDispatch::GetIDsOfNames yöntemi sağlar ve IDispatch::Invoke yöntemi sonra Visual C bu yöntemleri ve özellikleri için # sağlar. Bu biçimde geç bağlama bazı erken bağlama ile devredilen sürüm bağımlılıkları kaldırma avantajı vardır. Bununla birlikte, otomasyon kod bütünlük denetimi derleme kaldırma yan? s?ra, yöntemleri ve özellikleri düzeltmek için ipuçları sağlar, ıntellisense özellikleri sağlayan dezavantajları vardır.

Geç bağlama Visual C# ile kullanmak için <a0></a0>, System.Type.InvokeMember yöntemini kullanın. Bu yöntem, IDispatch::GetIDsOfNames ve IDispatch::Invoke Otomasyon sunucu yöntemlerini ve özelliklerini ça??r?r.

Geç bağlama kullanan bir Otomasyon istemcisi oluştur

  1. Microsoft Visual Studio .NET'i başlatın. Dosya menüsünde Yeni'yi tıklatın ve Project ' ı tıklatın. Visual C# Projects türlerinden Windows Application ' ı seçin. Varsayılan olarak, Form1 oluşturulur.
  2. Görünüm menüsünden araç kutusunu görüntülemek için araç seçin ve Form1'e bir düğme ekleyin.
  3. Button1</a1> çift tıklatın. Formun kod penceresi görüntülenir.
  4. Kod penceresinde aşağıdaki kodu
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    						
    ile:
    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. <a0>Kod</a0> penceresinin en üstüne gidin. Kullanma yönergeleri listesinin sonuna aşağıdaki satırı ekleyin:
    using System.Reflection; 
    					

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
Visual Studio ile Microsoft Office geliştirme
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
Bağlama hakkında ek bilgi için Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
245115Erken bağlama ve geç bağlama Otomasyon kullanma
244167Birden çok Office sürümü için Otomasyon istemcilerinin yazma
247579Mümkün olduğunda, Office uygulamalarını otomatikleştirmek için DISPID bağlama kullanın.

Özellikler

Makale numarası: 302902 - Last Review: 27 Mart 2007 Salı - Gözden geçirme: 7.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbpia kbautomation kbhowtomaster KB302902 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:302902

Geri Bildirim Ver

 

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