Internet Explorer'dan Word otomasyonu için bir VB ActiveX bileşeni nasıl kullanılır

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

Bu Sayfada

Özet

Bu makalede, bir ActiveX nasıl kullanabileceğiniz gösterilmektedir bileşen için istemci tarafında Otomasyon, Word'den bir Web sayfasını ınternet Explorer'da oluşturulur. Web sayfasında katıştırılmış bir komut dosyası yerine bir Web sayfasından ActiveX bileşeni kullanarak çeşitli yararları vardır:
  • Microsoft Word otomatikleştiren bir Visual Basic kodu varsa, bir ActiveX EXE ya da bir ActiveX DLL DOSYASı, Visual Basic projesinin dönüştürerek kodunuzu tarayıcıda yeniden kullanabilirsiniz.
  • Word kodlama için güvenli olarak işaretlenmemiştir. ınternet Explorer güvenlik ayarlarını, bağlı Word Otomasyonu komut dosyası kodu çalışmayabilir ya da kullanıcının güvenlik uyarısı istenebilir. Belirli yönergeler, bir ActiveX bileşeni karşıladığını varsayarak, bu güvenlik sorunları önlemek için kodlama için güvenli işaretlenebilir.
  • Visual Basic, bir Web sayfasındaki komut dosyası ile kullanılamaz, bazı özellikleri vardır. Visual Basic ile kullanılabilir ancak Web sayfası komut dosyasına değil Windows uygulama programlama arabirimi (API) çağırma yeteneği gibi bir özellik.
Kullanıcılar, bazı dış kaynak veya mantığı verileri kullanarak bir Word belgesi oluşturmak için bir Web sayfası arabirimiyle sunmak için Geliştirici ortak BIR senaryo var. Belge ve istemciye geri akışı oluşturmak için sunucu tarafı Word Otomasyonu kullanabilseniz de, Word otomasyonu ile ilgili bir sunucu tarafı yaklaşım kullanarak birçok dezavantajları vardır. Birincil olumsuzluk ölçeklenebilirlik, Word bir çok kaynak yoğun Otomasyon sunucusu ve Web sunucusundaki bir belge oluşturma için önerilmez.

ActiveX bileşeni istemcide belge oluşturmayı kullanarak, Web sunucusundan yoğun kaynak Word Otomasyon taşıyabilirsiniz. Bu makalede anlatılan örnek ActiveX bileşeni tarafından sunulan çözümüdür. Örnek Word Otomasyonu için belirli olsa da, aynı ilkelere diğer Microsoft Office otomatikleştirmek için uygulanabilir, Microsoft Excel gibi uygulamalar.

Daha fazla bilgi

Örnek karşıdan yükleyin.

Visual Basic ActiveX DLL DOSYASı proje AutoWord.exe içeren belge ve Web sayfaları, bu makalede açıklanan Word.

Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:
Autoword.exe
Yayım Tarihi: Nisan 17, 2001

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:
119591Microsoft 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.

Örnek ayarla

Autoword.exe karşıdan yükledikten sonra örnek için şu adımları izleyin:
  1. Web sunucunuz sanal kök dizinde fatura adlı bir klasör oluşturun. (Varsayılan sanal kök c:\ınetpub\wwwroot dizinidir.)
  2. Fatura için Autoword.exe dosyaları ayıklamanız klasör.
  3. Autoword1.htm bir metin veya HTML düzenleyicisinde açın ve tüm URL'lerde YourWebServer başvuruları ile sizin Web sunucunuzun adını değiştirin. Benzer şekilde, bağlantı dizesinde YourSQLServer Northwind örnek veritabanını içeren SQL Server adı ile değiştirin.

    Not: bir kullanılabilir Northwind SQL Server yok, örnek veritabanı, Microsoft Access Northwind örnek veritabanındaki yerine kullanılacak bağlantı dizesi değiştirebilirsiniz. Bir bağlantı için Access Northwind örnek veritabanında, aşağıdakine benzer:
    sConn = "provider=microsoft.jet.oledb.4.0; data source=" & _
            "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    					
  4. Autoword2.htm bir metin veya HTML düzenleyicisinde açın ve tüm URL'lerde YourWebServer başvuruları ile sizin Web sunucunuzun adını değiştirin.
  5. Internet Explorer'ı başlatın. Http://YourWebServer/invoice/AutoWord1.htm ve komut dosyası sınanacak http://YourWebServer/invoice/AutoWord2.htm göz atabilirsiniz. Ilk önce bu sayfaları herhangi birini ziyaret ettiğinizde, ActiveX karşıdan yüklemeniz istenir bileşeni.
Örnek Visual Basic ActiveX bileşeni ve komut dosyası, izleyen bölümlerde daha ayrıntılı olarak açıklanmıştır.

Visual Basic ActiveX bileşeni

Bu örnek Visual Basic ActiveX bileşeni, Web sayfasına komut dosyası, kullanıcının isteği sırasında bir sipariş fatura belgesi oluşturmak için etkileşim kurar. Web uygulamasını bir belirli sipariş KIMLIĞI için sipariş bilgilerini almak ActiveX bileşeni verebilir veya Web uygulamasını, paket sipariş bilgileri XML olarak ve işlemek için ActiveX bileşeni için göndermek seçebilirsiniz. Her iki durumda sipariş bilgilerini bileşen aldıktan sonra oluşturmak ve bu sipariş için fatura belgeyi görüntülemek için Word otomatikleştirebilirsiniz.

ActiveX bileşeni (AutomateWord), üç yöntemleri aç?klar Fatura sınıfı, tek bir sınıfı içerir:
  • GetData yöntemi, Northwind örnek veritabanındaki Sipariş hakkındaki bilgileri ayıklamak için ActiveX Data Objects (ADO) kullanır. Sipariş bilgileri m_Data özel üye değişkeni olarak depolanır. GetData yöntemi, istemci tarafı ortaya veri ayıklama için çağrılabilir.
  • Çağıran tarafından sağlanan sipariş bilgileri içeren m_Data özel üye değişkeni doldurmak için Microsoft XML (MSXML) SendData yöntemini kullanır. SendData sipariş bilgileri için bir DOMDocument nesnesini gösteren bir parametre umuyor. Sipariş bilgileri Web sayfasından bileşene göndermek için SendData yöntemi çağrılabilir. Bu yaklaşım ile sunucu-tarafı veri ayıklamak ve belge oluşturma için kullanılabilir bir XML veri Adası ile istemci sunmak için ASP kullanabilirsiniz.
  • M_Data özel üye değişkeni içinde sipariş bilgilerini içeren bir belge oluşturmak için Word Otomasyonu MakeInvoice yöntemini kullanır. Fatura için başlangıç noktası olarak kullanılan sunucu Web'de saklanan BIR belgeyi. Arayanın, tamamlanan belge daha sonra kullanmak için bir diske kaydedin ya da tamamlanmış Word belgeyi tarayıcı dışında görüntülemek seçebilirsiniz.
Invoice.CLS<a1>
Option Explicit

Private Type InvoiceData
    OrderID As String
    OrderDate As Date
    CustID As String
    CustInfo As String
    ProdInfo As Variant
End Type

Private m_Data As InvoiceData

Public Sub GetData(sOrderID As Variant, sConn As Variant)

    Dim oConn As Object, oRS As Object
    
    'Connect to the Northwind database.
    Set oConn = CreateObject("ADODB.Connection")
    oConn.Open sConn
    
    'Obtain the Customer ID and Order Date.
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Open "Select [OrderDate], [CustomerID] from Orders where " & _
             "[OrderID]=" & sOrderID, oConn, 3 'adOpenStatic=3
    m_Data.OrderID = sOrderID
    m_Data.OrderDate = CDate(oRS.Fields("OrderDate").Value)
    m_Data.CustID = oRS.Fields("CustomerID").Value
    oRS.Close
    
    'Obtain Customer information.
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Open "Select * from Customers Where CustomerID='" & _
             m_Data.CustID & "'", oConn, 3 'adOpenStatic=3
    m_Data.CustInfo = oRS.Fields("CompanyName").Value & vbCrLf & _
                      oRS.Fields("City") & " "
    If Not (IsNull(oRS.Fields("Region"))) Then
       m_Data.CustInfo = m_Data.CustInfo & oRS.Fields("Region").Value & " "
    End If
    m_Data.CustInfo = m_Data.CustInfo & oRS.Fields("PostalCode").Value & _
                      vbCrLf & oRS.Fields("Country").Value
    oRS.Close
    
    'Obtain Product information.
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Open "Select ProductName, Quantity, [Order Details].UnitPrice," & _
             "Discount from Products Inner Join [Order Details] on " & _
             "Products.ProductID = [Order Details].ProductID " & _
             "Where OrderID = " & sOrderID, oConn, 3 'adOpenStatic=3
    m_Data.ProdInfo = oRS.GetRows
    oRS.Close
    
    'Close the connection to the database.
    oConn.Close

End Sub

Public Sub SendData(oXML As Variant)

    'Extract the information from the DOMDocument object oXML and store
    'it in the private member variable m_Data.

    m_Data.OrderID = oXML.getElementsByTagName("OrderID").Item(0).Text
    m_Data.OrderDate = oXML.getElementsByTagName("OrderDate").Item(0).Text
    m_Data.CustID = oXML.getElementsByTagName("CustID").Item(0).Text
    m_Data.CustInfo = oXML.getElementsByTagName("CustInfo").Item(0).Text
    
    Dim oItems As Object, oItem As Object
    Set oItems = oXML.getElementsByTagName("Items").Item(0)
    ReDim vArray(0 To 3, 0 To oItems.childNodes.Length - 1) As Variant
    Dim i As Integer
    For i = 0 To UBound(vArray, 2)
        Set oItem = oItems.childNodes(i)
        vArray(0, i) = oItem.getAttribute("Desc")
        vArray(1, i) = oItem.getAttribute("Qty")
        vArray(2, i) = oItem.getAttribute("Price")
        vArray(3, i) = oItem.getAttribute("Disc")
    Next
    m_Data.ProdInfo = vArray

End Sub

Public Sub MakeInvoice(sTemplate As Variant, Optional bSave As Variant)
    
    Dim oWord As Object
    Dim oDoc As Object
    Dim oTable As Object
    
    If IsMissing(bSave) Then bSave = False

    'Open the document as read-only.
    Set oWord = CreateObject("Word.Application")
    Set oDoc = oWord.Documents.Open(sTemplate, , True)
    
    'Fill in the bookmarks.
    oDoc.Bookmarks("Customer_Info").Range.Text = m_Data.CustInfo
    oDoc.Bookmarks("Customer_ID").Range.Text = m_Data.CustID
    oDoc.Bookmarks("Order_ID").Range.Text = m_Data.OrderID
    oDoc.Bookmarks("Order_Date").Range.Text = m_Data.OrderDate
    
    'Fill in the table with the product information.
    '** Note that the table starts out with three rows -- the first row
    '   contains headers for the table, the second row is for
    '   the first set of product data, and the third row contains a total.
    '   New rows are added for additional products before the "total row".

    Set oTable = oDoc.Tables(1)
    Dim r As Integer, c As Integer
    For r = 1 To UBound(m_Data.ProdInfo, 2) + 1
        If r > 1 Then oTable.Rows.Add (oTable.Rows(oTable.Rows.Count))
        For c = 1 To 4
            oTable.Cell(r + 1, c).Range.Text = _
               m_Data.ProdInfo(c - 1, r - 1)
        Next
        oTable.Cell(r + 1, 5).Formula _
            "=(B" & r + 1 & "*C" & r + 1 & ")*(1-D" & r + 1 & ")", _
            "#,##0.00"
    Next

    'Update the field for the grand total and protect the document.
    oTable.Cell(oTable.Rows.Count, 5).Range.Fields.Update
    oDoc.Protect 1 'wdAllowOnlyComments=1
        
    If bSave Then
        'Save the document as "c:\invoice.doc" and quit Word.
        Dim nResult As Long
        nResult = MsgBox("Are you sure you wish to create the document" & _
             " ""c:\invoice.doc""? If this document already exists, " & _
             "it will be replaced", vbYesNo, "AutomateWord")
        If nResult = vbYes Then oDoc.SaveAs "c:\invoice.doc"
        oDoc.Close False
        oWord.Quit
    Else
        'Make Word visible.
        oWord.Visible = True
    End If
    
End Sub
				

Bir Web sayfasında ActiveX bileşeni'ni kullanma

Autoword1.htm GetData yöntemi ActiveX bileşeni, sipariş veri istemci-tarafı almak ve belge oluşturmak için nasıl kullanabileceğinizi göstermektedir.

Autoword1.htm
<HTML>
<HEAD>
   <OBJECT ID="AutoWord"
    CLASSID="CLSID:32646EBA-0919-4C2F-94D6-599F46DC34F2"
    CODEBASE="http://YourWebServer/invoice/package/AutomateWord.CAB#version=1,0,0,0">
   </OBJECT>
</HEAD>
<BODY>
Enter an order id between 10248 and 11077 and click the button to view the invoice for the order:
<P/><INPUT TYPE="text" VALUE="10500" ID="OrderID">
<P/><BUTTON ID="InvoiceButton">Create Invoice</BUTTON>
</BODY>

<SCRIPT Language="VBScript">

   Function InvoiceButton_OnClick()
      Dim sConn
      sConn = "Provider=sqloledb;Data Source=YourSQLServer;Initial Catalog=Northwind;UID=sa;"
      AutoWord.GetData OrderID.Value, sConn
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc"
   End Function

</SCRIPT>
</HTML>
				
Tamamlanmış belgeyi tarayıcı dışında görüntülemek için komut dosyasında Autoword1.htm ActiveX bileşeni kullanır. Tamamlanan belgeyi kaydedin ve bu tarayıcıda görüntülemek de seçebilirsiniz; ancak, bunun nedenle Word belgesi diske kaydedilmesi gerekiyor. Bileşen, istemcinin yerel sürücüde C:\Invoice.doc belgeyi kaydedebilirsiniz. ActiveX bileşeni komut dosyası oluşturma için güvenli olarak işaretlendiğinden, istemci kaydetme onaylamanız istenir.

MakeInvoice Autoword1.htm içinde yapılan çağrı, tamamlanan belge tarayıcıda görüntülemek istiyorsanız, şu şekilde değiştirin:
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc", True
      window.navigate "c:\invoice.doc"
				
Autoword2.htm sipariş verilerini ActiveX bileşeni, tamamlanmış bir belge oluşturmak için bir DOMDocument nesnesi olarak göndermek için SendData yöntemini nasıl kullanabileceğinizi göstermektedir. DOMDocument, Web sayfasında bulunan bir XML veri Adası tarafından oluşturulur. Böylece bileşen sipariş bilgileri çevirebilir çağıran tarafından gönderilen sipariş bilgileri doğru olarak işlemek için ActiveX bileşeni için XML iyi biçimlendirilmiş ve yapılandırılmış olması gerekir.

Autoword2.htm
<HTML>
<HEAD>
   <OBJECT ID="AutoWord"
    CLASSID="CLSID:32646EBA-0919-4C2F-94D6-599F46DC34F2"
    CODEBASE="http://YourWebServer/invoice/package/AutomateWord.CAB#version=1,0,0,0">
   </OBJECT>
</HEAD>
<BODY>
   <BUTTON ID="InvoiceButton">Create Invoice</BUTTON>
   <XML ID="DataXML">
     <Order>
        <OrderID>10700</OrderID>
        <OrderDate>10/10/2000</OrderDate>
        <CustID>SAVEA</CustID>
        <CustInfo>Save-a-lot
Markets Boise ID 83720
USA</CustInfo>
        <Items>
           <Product Desc="Chai" Qty="5" Price="18" Disc="0.2"/>
           <Product Desc="Sasquatch Ale" Qty="12" Price="14" Disc="0.2"/>
           <Product Desc="Scottish Longbreads" Qty="40" Price="12.5" Disc="0.2"/>
           <Product Desc="Flotemysost" Qty="60" Price="21.5" Disc="0.2"/>
        </Items>        
     </Order>
   </XML>
</BODY>

<SCRIPT Language="VBScript">
  
   Function InvoiceButton_OnClick()
      AutoWord.SendData DataXML.XMLDocument
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc"
   End Function

</SCRIPT>
</HTML>
				
Autoword1.htm hem Autoword2.htm'ActiveX bileşeni bir <object>etiketi yoluyla örneği etmelidirler yerineCreateObject işlevi. ActiveX bileşeni yüklü bileşeni yüklü olmayan kullanıcılar için otomatik olarak yüklenmesini sağlamak için <object>etiketini kullanarak amacı olur. Bir kullanıcı bu sayfalardan birini ziyaret bileşeni yüklü değil, belirtilen dolap (CAB) dosyasındaki URL'sinde bileşeni yüklenirCODEBASE özniteliği. Bağlı, kullanıcının güvenlik ayarları ınternet Explorer, ilk yükleme doğrulamak isteyen bir ileti alırlar.

Not: paket ve Dağıtım Sihirbazı ile bir Visual Basic for Autoword.exe içinde bulunan The CAB dosyası oluşturuldu. ActiveX bileşeni paketindeki komut dizilerinde kullanmak ve başlatmak için güvenli olarak işaretlenmiş, ancak dijital olarak imzalı değil.

ınternet bileşen karşıdan yüklemeler oluşturma hakkında daha fazla bilgi için dijital imzalama ve bileşenler için komut dizilerinde kullanmak ve başlatmak için güvenli olarak işaretleme, aşağıdaki Microsoft Developer Network (MSDN) Web sitelerine bakın:
Imzalama ve Authenticode koduyla denetimi
http://msdn2.microsoft.com/en-us/library/ms537364.aspx

Güvenli başlatma ve ActiveX denetimleri için komut dosyası
http://msdn2.microsoft.com/en-us/library/Aa751977.aspx

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
257757BILGI: Katılımsız yürütme için Office Otomasyonu'nu Not önerilen desteklenen mi
270906Microsoft Word'e akış sağlanacak bir Zengin Metin Biçimi (RTF) belgesi oluşturmak için nasıl ASP kullanılır
(c) Microsoft Corporation 2001, tüm hakları saklıdır. Katkıyı Gamze B Turner, Microsoft Corporation.

Özellikler

Makale numarası: 286023 - Last Review: 17 Mayıs 2007 Perşembe - Gözden geçirme: 11.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Visual Basic, Scripting Edition 5.0
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.01
  • Microsoft Internet Explorer 5.5
Anahtar Kelimeler: 
kbmt kbdownload kbautomation kbhowto KB286023 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:286023

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