Jak używać składnik VB ActiveX dla automatyzacji programu Word w programie Internet Explorer

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 286023 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule przedstawiono sposób korzystania z ActiveX składnik klienta automatyzacji wyraz w ze strony sieci Web, który jest renderowany w programie Internet Explorer. Istnieje kilka korzyści wynikające z używania składnika ActiveX ze strony sieci Web, zamiast skrypt, który jest osadzana w samej strony sieci Web:
  • Jeśli masz już kodu języka Visual Basic, który automatyzuje Program Microsoft Word, można ponownie użyć kodu w przeglądarce konwertując sieci Projekt języka Visual Basic EXE formantu ActiveX lub ActiveX DLL.
  • Program Word nie jest oznaczony obsługi skryptów. W zależności od ustawienia zabezpieczeń w programie Internet Explorer kodu automatyzacji programu Word w skrypcie nie może Uruchom lub użytkownik może być monitowany ostrzeżenie dotyczące zabezpieczeń. Zakładając, że Twoje Składnik ActiveX spełnia pewne wytyczne, może być oznaczony obsługi skryptów Aby uniknąć tych problemów z zabezpieczeniami.
  • Visual Basic ma kilka funkcji, które nie mogą korzystać z skrypt na stronie sieci Web. Na przykład jedną funkcję, która jest dostępna dla programu Visual Podstawowe, ale nie do skryptu strony sieci Web jest możliwość wywoływania aplikacji systemu Windows Interfejs programowania (API).
Typowym scenariuszem deweloper jest przedstawianie użytkowników ze stroną sieci Web interfejs służący do tworzenia dokumentu programu Word przy użyciu danych z określonego źródła zewnętrznego lub logicznych. Chociaż automatyzacji programu Word po stronie serwera można użyć do wygenerowania dokument i strumienia do klienta, istnieje wiele wady korzystania podejście po stronie serwera, który obejmuje automatyzacji programu Word. Podstawową wadą jest skalowalność; Program Word jest bardzo obciąża serwer automatyzacji i nie jest zalecane dla Generowanie dokumentu na serwerze sieci Web.

Za pomocą Składnik ActiveX do wykonywania Generowanie dokumentu po stronie klienta można Przenieś obciąża automatyzacji programu Word z serwera sieci Web. Jest to Rozwiązanie przedstawione przez składnik ActiveX próbki, która jest omówione w tym artykule. Mimo, że próbka jest specyficzne dla automatyzacji programu Word te same zasady mogą być stosowane do automatyzowania innych pakietu Microsoft Office aplikacje, takie jak Microsoft Excel.

Więcej informacji

Pobieranie próbki

AutoWord.exe zawiera projekt Visual Basic ActiveX DLL programu Word dokumentów i stron sieci Web, które są opisane w tym artykuł.

W następujący plik jest dostępny do pobrania z pobierania plików firmy Microsoft Centrum:
Autoword.exe
Data wydania: kwietnia 17, 2001

Aby uzyskać dodatkowe informacje dotyczące sposobu pobierania firmy Microsoft Obsługa plików, kliknij następujący numer artykułu w celu wyświetlenia Bazy wiedzy Microsoft Knowledge Base:
119591 Jak uzyskać pliki pomocy technicznej firmy Microsoft w usługach Online
Firma Microsoft przeskanowała plik w poszukiwaniu wirusów. Najczęściej używane do firmy Microsoft aktualne oprogramowanie wykrywania wirusa, który był dostępny w dniu, w którym plik została zaksięgowana. Plik jest przechowywany na serwerach o podwyższonych zabezpieczeniach, które uniemożliwiają nieautoryzowane zmiany w pliku.

Konfigurowanie próbki

Po pobraniu Autoword.exe, wykonaj następujące kroki, aby próbki należy zdefiniować:
  1. Utwórz folder o nazwie faktury w katalogu wirtualnego katalogu głównego serwera sieci Web. (Domyślny wirtualny katalog główny jest C:\Inetpub\Wwwroot.)
  2. Wyodrębnij pliki w Autoword.exe do faktury folder.
  3. Otwórz Autoword1.htm w edytorze HTML lub tekst i Zamień odniesienia do TwójSerwerSieciWeb w wszystkie adresy URL z nazwą serwera sieci Web. Podobnie Zamień YourSQLServer w ciągu połączenia o nazwie programu SQL Server, zawiera przykładową bazę danych Northwind.

    UWAGA: Jeśli nie ma dostępnego serwera SQL z Northwind Przykładowa baza danych, można zmodyfikować ciąg połączenia, należy użyć programu Microsoft Zamiast tego dostępu przykładowa baza danych Northwind. Połączenie Northwind programu Access Przykładowa baza danych jest podobny do następującego:
    sConn = "provider=microsoft.jet.oledb.4.0; data source=" & _
            "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    					
  4. Otwórz Autoword2.htm w edytorze HTML lub tekst i Zamień odniesienia do TwójSerwerSieciWeb w wszystkie adresy URL z nazwą serwera sieci Web.
  5. Uruchom program Internet Explorer. Można przeglądać http://YourWebServer/Invoice/AutoWord1.htm i http://YourWebServer/Invoice/AutoWord2.htm przetestować skrypt. Gdy użytkownik pierwszy odwiedź jedną z tych stron, zostanie wyświetlony monit o pobranie ActiveX składnik.
Składnik ActiveX języka Visual Basic próbki i skryptu w następnych sekcjach szczegółowo opisane.

Składnik ActiveX języka Visual Basic

Składnik ActiveX języka Visual Basic, w tym przykładzie współdziała z Skrypt strony sieci Web do generowania dokumentu faktury zamówienia na żądanie użytkownika. Aplikacja sieci Web mogą zezwolić na składnik ActiveX w celu uzyskania zamówienia informacje o identyfikator danego zamówienia lub aplikacji sieci Web mogą zdecydować się na pakiet informacje o zamówieniach w formacie XML i wysłać go do składnik ActiveX przetwarzanie. W każdym przypadku po składnika uzyskuje informacje o zamówieniach można automatyzować program Word do tworzenia i wyświetlania dokumentu faktury kolejność.

(Składnik ActiveXAutomateWord) zawiera jedną klasę Faktury Klasa, która udostępnia trzy metody:
  • W GetData Metoda używa obiekty ActiveX Data Objects (ADO) do wyodrębnienia informacji o zamówieniu w przykładowej bazie danych Northwind. Informacje o zamówieniu jest przechowywane w m_Data Zmienna członka prywatnych. W GetData wywoływana metoda Pozwól ekstrakcji danych występują po stronie klienta.
  • W SendData Metoda używana przez Microsoft XML (MSXML) do wypełnienia m_Data Zmienna członka prywatny zawierający informacje zamówienia dostarczone przez obiekt wywołujący. SendData oczekuje jednego parametru, który reprezentuje DOMDocument Obiekt informacji o zamówieniu. W SendData wywoływana metoda wysyłania informacji o zamówieniu w sieci Web Strona składnika. W związku z tym ASP można używać do wyodrębniania danych po stronie serwera i obecnie Wyspa klienta z danymi XML, które mogą być używane dla Generowanie dokumentu.
  • W MakeInvoice Metoda używającego automatyzacji programu Word do utworzenia dokumentu, który zawiera informacje w kolejności m_Data Zmienna członka prywatnych. Dokument jest przechowywany w sieci Web serwer jest używany jako punkt wyjścia dla faktury. Obiekt wywołujący może zdecydować się na Wyświetlanie wypełniony dokument programu Word, poza z przeglądarki lub zapisać wypełniony dokument na dysku do późniejszego wykorzystania.
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
				

Za pomocą składnika ActiveX ze strony sieci Web

Autoword1.htm przedstawiono sposób użycia GetData Metoda pozwala pobierać dane zamówienie składnik ActiveX po stronie klienta i kompilacji dokumentu.

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>
				
Skrypt Autoword1.htm używa do wyświetlania składników ActiveX wypełniony dokument poza przeglądarki. Można też zapisać wypełniony dokument i wyświetlić w przeglądarce; jednak wymaga to że dokument programu Word można zapisać na dysku. Składnik można zapisać dokument jako C:\Invoice.doc na lokalnym dysku klienta. Ponieważ składnik ActiveX zaznaczonych jako bezpieczne do obsługi skryptów, klient jest monit o potwierdzenie Zapisz.

Jeśli chcesz wyświetlić wypełniony dokument w przeglądarce, Zmień wywołanie MakeInvoice w Autoword1.htm do następującego:
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc", True
      window.navigate "c:\invoice.doc"
				
Autoword2.htm przedstawiono sposób użycia SendData Metoda wysyłania danych zamówienia jako DOMDocument obiekt, aby składnik ActiveX generowania wypełniony dokument. W DOMDocument jest tworzona z Wyspy danych XML, który znajduje się na stronie sieci Web. Składnik ActiveX poprawnie przetwarzać informacje o zamówieniach, który jest wysyłane przez wywołującego, XML musi być poprawnie sformułowany i strukturalną tak składnik może zinterpretować go jako informacje o zamówieniach.

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>
				
W Autoword1.htm i Autoword2.htm należy zauważyć, że Składnik ActiveX zostanie uruchomiony z tagu <object> zamiast the<b00></b00></object>Metoda CreateObject Funkcja. Ma służyć za pomocą znacznika <object> Włącz automatyczne pobieranie składników ActiveX dla użytkowników, których nie już zainstalowany składnik. Jeśli użytkownik odwiedza jedną z tych stron i nie zainstalowano składnika, składnik jest pobierany z pliku cabinet Plik (CAB) pod adresem URL, wskazanej w<b00></b00></object>CODEBASE atrybut. W zależności od ustawień zabezpieczeń użytkownika w Internecie Eksplorator one najpierw pojawić się monit o potwierdzenie pobierania.

UWAGA: Plik CAB uwzględnionej w Autoword.exe został utworzony z Package and Deployment Wizard dla programu Visual Basic. Składnik ActiveX pakiet zaznaczonych jako bezpieczne do wykonywania skryptów i inicjowania, ale nie jest podpisany cyfrowo.

Aby uzyskać więcej informacji na temat tworzenia składnika Internet pliki do pobrania, cyfrowego podpisywania i oznakowanie składników jako bezpieczne i Inicjowanie, zobacz następujące witryny firmy Microsoft Developer Network (MSDN) w sieci Web:
Podpisywanie i sprawdzania kodu przy użyciu technologii Authenticode
http://msdn2.microsoft.com/en-us/library/ms537364.aspx

Bezpieczne inicjowanie i wykonywanie skryptów formantów ActiveX
http://msdn2.microsoft.com/en-us/library/Aa751977.aspx

Materiały referencyjne

Aby uzyskać dodatkowe informacje kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
257757INFORMACJE: Automatyzacji pakietu Office dla instalacji nienadzorowanej wykonanie jest niezalecane lub jest obsługiwany
270906 Sposób użycia stron ASP, aby utworzyć dokument Rich Text Format (RTF) do strumienia do programu Microsoft Word
(c) Microsoft Corporation 2001, wszystkie prawa Zarezerwowane. Składki Maria B. Turner, Microsoft Corporation.

Właściwości

Numer ID artykułu: 286023 - Ostatnia weryfikacja: 6 października 2011 - Weryfikacja: 3.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Słowa kluczowe: 
kbdownload kbautomation kbhowto kbmt KB286023 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to:286023

Przekaż opinię

 

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