Použití součásti VB ActiveX k automatizaci aplikace Word z aplikace Internet Explorer (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Překlady článku Překlady článku
ID článku: 286023 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek dokumentuje, jak pomocí ActiveX součásti pro klienta automatizace aplikace Word z webové stránky vykreslovány v aplikaci Internet Explorer. Používání komponenty ActiveX z webové stránky namísto skript, který je vložený v samotné webové stránky jsou několik výhod:
  • Pokud již máte kód jazyka, který automatizuje aplikace lze znovu použít kód v prohlížeči převedením projektu jazyka ActiveX EXE nebo ActiveX DLL.
  • Word není označen bezpečný pro skriptování. V závislosti na nastavení zabezpečení v aplikaci Internet Explorer nemusí spustit kód Word automatizace ve skriptu nebo může být uživatel vyzván s upozorněním zabezpečení. Za předpokladu, že komponenta ActiveX splňuje určité pokyny, ji může být označen jako bezpečný pro skriptování vyhnout tyto problémy zabezpečení.
  • Jazyka má několik funkcí, které nelze použít s skript na webové stránce. Například jeden funkce, která je k dispozici jazyka, ale nikoli k webové stránce skript je schopnost volání Windows aplikační programovací rozhraní (API).
Běžné scénáře vývojáře je uživatelům prezentovat s webovou stránku rozhraní pro vytváření dokumentu Word pomocí dat z některých externí zdroj nebo logiky. Přestože Word automatizace na straně serveru lze použít ke generování dokumentu a datového proudu zpět na klienta, jsou mnoho nedostatky pomocí přístup straně serveru, který zahrnuje Word automatizace. Primární Nevýhodou je škálovatelnost; Word je Automation server velmi zdrojů náročné a není doporučeno pro generování dokumentu na webovém serveru.

Pomocí součásti ActiveX provést generování dokumentu klienta můžete přesunout automatizace Word zdrojů náročné směrem od serveru. Toto řešení je uvedena ukázková komponenta ActiveX, která je popsána v tomto článku je. Ačkoli je ukázkový konkrétní Word automatizace, automatizace jiných Microsoft Office mohou být použity stejných principů aplikací, například Microsoft Excel.

Další informace

Stáhnout ukázky

AutoWord.exe obsahuje projekt jazyka ActiveX DLL Word dokument a webových stránek, které jsou popsány v tomto článku.

Na webu služby Stažení softwaru je k dispozici ke stažení následující soubor:
Autoword.exe
Datum vydání: Duben 17, 2001

Další informace o tom, jak stahovat soubory podpory společnosti Microsoft, naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
119591Jak získat soubory podpory společnosti Microsoft ze serverů služeb online
Microsoft tento soubor zkontroloval na výskyt virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici v den uveřejnění tohoto článku. Soubor je uložený na zabezpečených serverech neumožňujících neoprávněné změny souborů.

Nastavit ukázky

Po stažení Autoword.exe ukázkové nastavit takto:
  1. Vytvořte složku s názvem Faktura v virtuálního kořenového adresáře serveru WWW. (Výchozí virtuální kořenový adresář je C:\Inetpub\Wwwroot.)
  2. Extrahování souborů v Autoword.exe fakturace složky.
  3. Otevřete Autoword1.htm v textu nebo editoru HTML a odkazy YourWebServer v všechny URL nahraďte název serveru. Podobně nahraďte YourSQLServer v řetězci připojení název SQL serveru obsahujícího ukázkovou databázi Northwind.

    Poznámka: Pokud nemáte k dispozici server SQL s Northwind ukázková databáze, můžete upravit připojovací řetězec namísto použití ukázkové databáze Microsoft Access Northwind. Připojení k Access Northwind ukázkové databáze následujícímu:
    sConn = "provider=microsoft.jet.oledb.4.0; data source=" & _
            "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    					
  4. Otevřete Autoword2.htm v textu nebo editoru HTML a odkazy YourWebServer v všechny URL nahraďte název serveru.
  5. Spusťte aplikaci Internet Explorer. Můžete procházet http://YourWebServer/invoice/AutoWord1.htm a http://YourWebServer/invoice/AutoWord2.htm test skriptu. Při první návštěvě buď tyto stránky, výzva ActiveX stáhnout součásti.
Komponenta ActiveX jazyka ukázkové a skriptu jsou popsány podrobněji v následujících částech.

Komponenty ActiveX jazyka

Komponenta ActiveX jazyka v tomto vzorku spolupracuje s webovou stránku skript ke generování dokumentu faktury objednávky na žádost uživatele. Webová aplikace může povolit součást ActiveX získat informace o pořadí pro ID dané objednávky nebo webová aplikace může zvolit balíček informace objednávky jako XML a odeslat jej součást ActiveX pro zpracování. V obou případech po součást získává informace o pořadí jej automatizovat Word k vytvoření a zobrazení dokumentu faktury pro objednávku.

Komponenta ActiveX (AutomateWord) obsahuje jednu třídu třídy faktury, které poskytuje tři metody:
  • Metoda GetData extrahovat informace o pořadí v ukázkové databázi Northwind používá ActiveX Data Objects (ADO). Pořadí informace uloženy v soukromé členské proměnné m_Data. Umožňují extrakce dat nastat na straně klienta může být volána metoda GetData.
  • Metoda SendData Microsoft XML (MSXML) používá k vyplnění m_Data soukromé členské proměnné s pořadí informace poskytované volajícím. SendData očekává jeden parametr, který představuje objekt DOMDocument informace pořadí. Odeslat informace objednávky z webové stránky součást může být volána metoda SendData. Tento postup můžete použít ASP extrahovat data straně serveru a prezentovat klienta s ostrov data XML, které lze použít pro generování dokumentu.
  • Metoda MakeInvoice automatizace Word používá k vytvoření dokumentu, který obsahuje informace o pořadí v m_Data soukromé členské proměnné. Dokument je uložen na webovém serveru použít jako počáteční bod pro fakturu. Volající se může rozhodnout zobrazit dokončené dokumentu mimo prohlížeč nebo dokončené dokument uložit na disk pro pozdější použití.
Invoice.cls
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
				

Pomocí komponenty ActiveX z webové stránky

Autoword1.htm dokumentuje, jak umožnit součást ActiveX načíst pořadí dat klienta a sestavení dokumentu pomocí metody GetData.

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>
				
Skript v Autoword1.htm používá součást ActiveX zobrazit dokončené dokumentu mimo prohlížeč. Můžete také zvolit dokončené dokument uložit a zobrazit v prohlížeči; však učiníte tak vyžaduje uložit dokumentu na disk. Součást může dokument uložit jako C:\Invoice.doc na místní jednotce klienta. Protože součást ActiveX je označena jako bezpečný pro skriptování, klient výzva k potvrzení uložit.

Pokud chcete zobrazit dokončené dokumentu v prohlížeči změnit následující volání MakeInvoice v Autoword1.htm:
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc", True
      window.navigate "c:\invoice.doc"
				
Autoword2.htm dokumentuje, jak odeslat data objednávky jako objekt DOMDocument součást ActiveX pro generování dokončené dokumentu pomocí metody SendData. DOMDocument je vytvořen z ostrov data XML, který se nachází na webové stránce. Pro součást ActiveX správně zpracovat informace objednávky odeslané volající XML musí být ve správném a strukturované tak, aby součást lze interpretovat jako informace o objednávce.

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>
				
V Autoword1.htm a Autoword2.htm, měli byste si poznamenat vytvořit instanci součásti ActiveX podle metodou z značky <object>spíše nežFunkce CreateObject. Účel použití značky <object>je povolit automatické stahování součást ActiveX uživatelé ještě nemají součást nainstalována. Pokud uživatel navštíví jeden z těchto stránek a součást není nainstalována součást stažené z CAB soubor (CAB) na adrese URL, uvedené veAtribut CODEBASE. V závislosti na nastavení zabezpečení uživatele v aplikaci Internet Explorer, mohou nejprve obdržet výzvou k potvrzení stahování.

Poznámka: soubor CAB, který je obsažen v Autoword.exe byl vytvořen s Package a Průvodce zavedením pro jazyka. Komponenta ActiveX v balíčku označeny jako bezpečné pro skriptování a inicializaci, ale není digitálně podepsán.

Další informace o vytváření stahování součást Internet digitální podepisování a označení komponenty jako bezpečný pro skriptování a inicializaci, naleznete na následujících webech Microsoft Developer Network (MSDN):
Podepisování a kontrola kód s Authenticode
http://msdn2.microsoft.com/en-us/library/ms537364.aspx

Bezpečné inicializaci a skriptování pro prvky ActiveX
http://msdn2.microsoft.com/en-us/library/Aa751977.aspx

Odkazy

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
257757INFORMACE: Není doporučeno nebo Supported je automatizace systému Office pro spuštění bezobslužné
270906Použití skriptů ASP k vytvoření dokumentu ve formátu RTF (Rich Text Format) pro odeslání datovým proudem do aplikace Microsoft Word (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
(c) Microsoft Corporation 2001 všechny rezervované práv. Příspěvky Lenka B. Turner, Microsoft Corporation.

Vlastnosti

ID článku: 286023 - Poslední aktualizace: 17. května 2007 - Revize: 11.3
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbdownload kbautomation kbhowto KB286023 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:286023

Dejte nám zpětnou vazbu

 

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