Makale numarası: 141759 - Son Gözden Geçirme: 19 Ocak 2007 Cuma - Gözden geçirme: 4.6

Örnek: XLCLIENT: Excel Otomasyonu istemcisi

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

XLCLIENT, Microsoft Excel, OLE Otomasyonu'nu kullanarak denetlemek gösterilmiştir. MFC dizin MFC kullanan örnek içerir. SDK dizin MFC kullanan örnek içerir.

Daha fazla bilgi

Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:
Xlclient.exe (http://download.microsoft.com/download/excel95/utility1/1/win98/en-us/xlclient.exe)
Microsoft destek dosyalarını karşıdan yükleme konusunda ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır
Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır. Excel, bir istemci bunları OLE Otomasyonu erişebilmeleri nesneler, özellikler ve yöntemler sunar. Bu örnek, hücrelere değerlerini ekler ve bu değerler bir hesap oluşturur aşağıdaki Visual Basic 4.0 kod eşit bir otomasyon istemci yazma gösterilmiştir.
Const xlWorkSheet-4167 =
Const xl3DPie-4102 =
Const xlRows = 1
Uygulama kümesi CreateObject("Excel.Application") =
Application.Visible = true
Set çalışma kitabında application.Workbooks.Add(template:=xlWorkSheet) =
Çalışma kümesi workbook.Worksheets(1) =
Worksheet.Range("A1:D1").Value = Array ("Kuzey", "Güney", "Doğu", "Batı")
Worksheet.Range("A2").Value 5.2 =
Worksheet.Range("B2").Value = 10
Worksheet.Range("C2").Value = 8
Worksheet.Range("D2").Value = 20
Aralık ayarlama worksheet.Range("A1:D2") =
Set grafik workbook.Charts.Add =
Kaynak Chart.ChartWizard: aralığı = galerisini: xl3DPie, =
Biçim: = 7'yi, sonra da plotBy: xlRows, categoryLabels =: = 1, seriesLabels: = 0, hasLegend: = 2, başlık: "Satış yüzdeleri" workbook.Saved = = true
'; Bu nedenle, Excel'in bu belgeyi Kapanışta kaydedilip edilmeyeceğine sorun olmaz.

Microsoft Excel'in bir otomasyon istemci Write nasıl kullanılır

Bir Otomasyon istemcisinin, <a1>Denetim</a1> Microsoft Excel ıdispatch arabirimini kullanır. Microsoft Excel'in bir otomasyon istemci yazarken aşağıdaki bilgiler geçerlidir:

  • Microsoft Excel'de otomasyon yöntemleri/Vba_xl.hlp dosyayı Excel ile birlikte kullanmayı planladığınız özelliklerinin belgelerine bakın.
  • Aşağıdaki knowledge base makalesinden kazanılabilecek xlWorkSheet, <a2>xl3DPie</a2>, <a4>xlRows vb. gibi Microsoft Excel'in sabit değerleri:
    112671  (http://support.microsoft.com/kb/112671/EN-US/ ) OFF: "yerleşik sabitleri Visual Basic for Applications" (WC0993)
    Bu sabit değerleri aynı zamanda Microsoft Excel'in tür kitaplığından tür kitaplığı tarayıcıda Ole2vw32.exe gibi (derleyici 's \bin dizinine) kullanarak elde edilebilir. Microsoft Excel'in tür kitaplığı (örneğin, Microsoft Excel 95 ABD sürümü Xl5en32.olb) açmak Ole2vw32.exe dosya/ViewTypeLibrary menüsünü kullanma. Typeinfos bileşik_kutu bırakın ve "sabit" seçin. Microsoft Excel'in sabit, değişken/DataMembers</a1> liste kutusunda görüntülenir.
  • Tüm bağımsız değişkenleri ve dönüş türleri, Microsoft Excel Otomasyonu yöntemleri ve türleri VARIANT tipindedir. Içine doldurulmaları gerekir ve bir VARIANT alınan fiili türleri açıkça Vba_xl.hlp içinde bildirilen değil. Ancak türleri belgelere kolayca edilebilir. Örneğin, bir sayı, vt_ı2, dize olarak VT_BSTR ve nesne VT_DISPATCH olarak geçirilebilir. Gerekirse, Microsoft Excel'in uygun coercions yapacaksınız. Microsoft Excel tarafından döndürülen değerleri aynı şekilde edilebilir. Tam dönüş değeri türü belirlenemez VARIANT.vt alanı denetleyin veya VariantChangeType kullanarak dönüş türü işlenemiyor. "Microsoft Excel özelliklerini" da belirtildiği gibi Office Developer's Kit'te MSDN CD'sinde, Microsoft Excel, Microsoft Excel Developer's Kit'te Bölüm 7'in bir bölümü hiçbir zaman, aşağıdaki listede olmayan bir veri türü ile bir VARIANT döndürür:
       Data Type                               Variant Constant
       ---------                               ----------------
       Boolean                                 VT_BOOL
       Currency (scaled integer)               VT_CY
       Date                                    VT_DATE
       Error cell values (#N/A, #REF etc.)     VT_ERROR
       Integer                                 VT_I2
       Long (long integer)                     VT_I4
       Object                                  VT_DISPATCH
       Single (single-precision floating-point)VT_R4
       Double (double-precision floating-point)VT_R8
       String                                  VT_BSTR
    						
Herhangi bir Otomasyon istemcisi aşağıdaki bilgiler geçerlidir:

  • OLE, Unicode dize kullanılır. OLESTR makro dizeleri Unicode dize sabitleri dönüştürmek için kullanılır. MFC içinde dizeleri içeren değişkenler için ve Unicode T2OLE ve OLE2T makrolarını kullanarak dönüştürülebilir. Bkz: Ayrıntılar MFC TechNote 59. MFC kullanan kodu, ANSı/Unicode dönüşümü için bilgi aşağıdaki Bilgi Bankası makalesinde bulabilirsiniz:

    Ansı'den Unicode'a Unicode ve ANSI için OLE için dönüştürme nasıl KIMLIĞI:138813  (http://support.microsoft.com/kb/138813/EN-US/ )
  • OLE API veya arabirim yönteminin çağıran, bağımsız değişkenleri ve dönüş değerleri boşaltmayı sorumludur.

Bir MFC Otomasyon istemcisi Microsoft Excel'in Write nasıl kullanılır

  1. Otomasyon ile uygulama oluşturmak için kullanmak AppWizard destekler.
  2. Class Wizard ve seçme AddClass / bir OLE TypeLibrary Kimden, OLE Otomasyonu sekmesini seçin. Excel'in tür kitaplığı (ABD Xl5en32.olb seçin. Microsoft Excel 95 sürümü) <a0>Microsoft Excel</a0> dizinindeki. Kullanacağınız Microsoft Excel nesneleri seçin. Seçtiğiniz her nesne için bir türetilmiş COleDispatchDriver proxy sınıf ClassWizard oluşturacak. Örnek uygulama, aralık, çalışma kitabı, çalışma kitaplarını, çalışma sayfası, grafik ve grafikleri Excel nesne seçili ve ClassWizard yeni sınıflar Xl5en32.h ve Xl5en32.h oluşturuldu. Aralığın yöntemi iletişim kutusu, DialogBoxA veya DialogBoxW olarak sistem üstbilgi dosyaları tanımlamak için farklı bir ad (örneğin, iletişim kutusu) nesne iletişim kutusu adını değiştirin.
  3. Microsoft Excel'in denetim için kod içeren .cpp dosyasına adım 2'de oluşturulan üstbilgi dosyası içerir.
  4. Geçirilen isteğe bağlı bağımsız değişkenlerini VT_ERROR/DISP_E_PARAMNOTFOUND içeren bir VARIANT ileterek belirtilebilir.
  5. Bazı Microsoft Excel yöntemleri, iki sözdizimi kullanarak Vba_xl.hlp içinde belirtildiği gibi çağrılabilir. Örneğin, çalışma kitaplarını yöntemi gibi belgelenmiştir:
    Sözdizimi 1
    Object.Workbooks(Index)

    Sözdizimi 2
    Object.Workbooks
    ClassWizard yalnızca bir yöntemini oluşturur. Böylece, diğer sözdizimini kullanmak gerekiyorsa, oluşturulan .h ve diğer sözdizimi için başka bir yöntem eklemek için .cpp dosyasını değiştirin. Örneğin bu bir örnek Workbooks2 gibi <a0>çalışma kitaplarını</a0> yönteminin 2 sözdizimine karşılık gelmesi için uygulama sınıfı eklendi:
       VARIANT Application::Workbooks2()
       {
       VARIANT result;
       InvokeHelper(0x23c, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
       return result;
       }
    						
    Workbooks2 olarak çalışma kitaplarını aynı DISPID (0x23c) vardır, ancak herhangi bir bağımsız değişkeni yoktur. Bu sorun, VT_ERROR/DISP_E_PAMNOTFOUND ileterek çözümlenemiyor. Tüm yöntemler, iki sözdizimleri sahip bu şekilde ele alınması gereken olarak işaretlenmiş.

    Örnek, iki sözdizimleri sahiptir aralığı, çalışma kitaplarını ve grafikleri yöntemleri kullanır. Sonuç olarak Range1, <a2>Workbooks2</a2> ve <a4>Charts2 ekler.
  6. MFC'ın COleDispatchDriver sınıfı, adlandırılmış değişkenleri desteklemiyor. Bağımsız değişkenler, konuma göre geçirilmelidir.
  7. Microsoft Excel, bir özel durum oluşturur, DISP_E_EXCEPTION IDispatch::Invoke döndürür ve bu yöntemin EXCEPINFO parametre doldurur. MFC olur ve istemci bu özel yakalama tarafından EXCEPINFO yapısında hata bilgilerini alabilir, bir COleDispatchException durum oluşturur.
  8. Doc.cpp kod örneğinde, Microsoft Excel'in MFC sınıfları kullanılarak nasıl gösterir.

Microsoft Excel'in olmayan MFC otomasyon istemci yazma

  1. CreateObject ve ınvoke (Invhelp.cpp ve Win32 SDK'sındaki <a1>Gözat</a1> örneğinin Invhelp.h yardımcı işlevlerini kolayca olmayan MFC otomasyon istemci yazmak için kullanılır. IDispatch::Invoke doğrudan çağırmak için başka bir yakla??md?r'ı tıklatın. Kullandığı geç bir sunucuyu denetlemek için bağlama çağırır. Bunu daha verimli değişiklik yaparak kimliği bağlama DISPID IDispatch::GetIDsOfNames üzerinden değil, tür kitaplığından alınır'ı kullanmak için yapılabilir.
  2. Invoke yardımcı işlevi, adlandırılmış değişkenleri desteklemiyor. Bağımsız değişkenler, konuma göre geçirilmelidir.
  3. Invoke yardımcı işlevi bir EXCEPINFO yapısı parametrelerden biri geçirilmesini sağlar. Microsoft Excel'in hata bilgileri bu yapısıyla, bir özel durum oluşturur ve bir EXCEPINFO doldurur yapısı, istemci tarafından sağlanır. Olacak Çağır Microsoft Excel, bir özel durum oluşturur, DISP_E_EXCEPTION dönün. Dizeleri istemci tarafından serbest gerekir EXCEPINFO yapısı. Örnek kod Microsoft Excel'e bir EXCEPINFO yapısı vermeyen.
  4. Xlclient.cpp kod örneğinde, Microsoft Excel'in nasıl gösterir.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 2000 Service Pack 1
  • Microsoft Visual C++ 6.1
  • Microsoft OLE 4.0, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows 95
  • Microsoft Excel 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbdownload kbautomation kbsample KB141759 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:141759  (http://support.microsoft.com/kb/141759/en-us/ )