Как использовать компонент VB ActiveX для автоматизации Word из обозревателя Internet Explorer

Переводы статьи Переводы статьи
Код статьи: 286023 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье показано, как использовать элемент ActiveX компонентом со стороны клиента автоматизации Word из веб-страницы, отображаемой для в обозревателе Internet Explorer. Ниже перечислены некоторые преимущества использования компонента ActiveX на веб-странице вместо того, сценарий, внедренный в саму веб-страницу:
  • Если у вас уже есть код Visual Basic, который автоматизирует Microsoft Word, можно повторно использовать код в браузере путем преобразования в Проект Visual Basic ActiveX EXE или ActiveX DLL.
  • Word не помеченных как безопасные для выполнения сценариев. В зависимости от параметры безопасности обозревателя Internet Explorer, код автоматизации Word в сценарий не может Запуск или пользователь может быть выведено предупреждение системы безопасности. Предположим, что ваш Компонент ActiveX определенным требованиям, его можно пометить безопасный для сценариев Чтобы избежать этих проблем безопасности.
  • Visual Basic имеет несколько функций, которые нельзя использовать с сценарий на веб-странице. Например одной из функций, доступных для визуального Но основные не сценарию веб-страницы является возможность вызова приложения Windows интерфейс программирования (API).
Обычно разработчик, чтобы предоставить пользователям веб-страницы интерфейс для создания документа Word с использованием данных из внешнего источника или логики. Несмотря на то, что можно использовать для создания серверной автоматизации Word Документирование и потока его обратно клиенту, есть много недостатки с помощью на сервере подхода, который включает в себя автоматизации Word. Основным недостатком является масштабируемость; Слово является сервером автоматизации очень ресурсоемким процессом и не Рекомендуется использовать для создания документов на веб-сервере.

С помощью Компонент ActiveX для выполнения создания документа на клиенте, вы можете Переместите автоматизации Word интенсивного использования ресурсов от веб-сервера. Это Предоставленный образец компонента ActiveX, решение описанные в этой статье. Несмотря на то, что образец для автоматизации Word те же принципы могут применяться для автоматизации других Microsoft Office приложения, такие как Microsoft Excel.

Дополнительная информация

Загрузить пример

AutoWord.exe содержит проекта Visual Basic ActiveX DLL Microsoft Word документов и веб-страниц, описанных в данном в статье.

В Следующий файл доступен для загрузки из загрузки Майкрософт Центр:
Autoword.exe
Дата выпуска: апрель 17, 2001

Для получения дополнительных сведений о загрузке Microsoft Файлы поддержки, обратитесь к следующей статье в База знаний корпорации Майкрософт:
119591 Как загрузить файлы поддержки Майкрософт из Интернета
Корпорация Майкрософт проверила этот файл на наличие вирусов. Корпорация Майкрософт использует наиболее текущего антивирусного программного обеспечения на дату, файл была учтена. Файл хранится на защищенных серверах, которые помогают для файла предотвращает его несанкционированное изменение.

Настройка образца

После загрузки Autoword.exe выполните следующие действия Настройка образца:
  1. Создайте папку с именем «счет» в виртуальном корневом каталоге веб-сервера. (Виртуальный корневой каталог по умолчанию — C:\Inetpub\Wwwroot).
  2. Извлеките файлы из Autoword.exe к счету папка.
  3. Откройте в текстовом редакторе или редакторе HTML Autoword1.htm и замена ссылки на YourWebServer в все URL-адреса с именем веб-сервера. Аналогичным образом замена YourSQLServer в строке подключения с именем SQL Server, содержит образец базы данных "Борей".

    ПРИМЕЧАНИЕ: Если у вас нет доступных серверов SQL Server с помощью данных «Борей» Образец базы данных, можно изменить строку подключения для использования Microsoft Вместо этого доступ к учебной базе данных «Борей». Подключение к Access «Борей» Образец базы данных, подобное приведенному ниже:
    sConn = "provider=microsoft.jet.oledb.4.0; data source=" & _
            "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    					
  4. Откройте в текстовом редакторе или редакторе HTML Autoword2.htm и замена ссылки на YourWebServer в все URL-адреса с именем веб-сервера.
  5. Запустите обозреватель Internet Explorer. Для поиска http://YourWebServer/Invoice/AutoWord1.htm и http://YourWebServer/Invoice/AutoWord2.htm сценарий теста. Когда вы первый посетите любой из этих страниц, будет предложено загрузить ActiveX компонент.
Образец компонента Visual Basic ActiveX и сценариев более подробно в следующих разделах.

Компонент ActiveX Visual Basic

Компонент ActiveX Visual Basic в этом примере взаимодействует с Сценарии веб-страницы для создания документа накладной заказа по запросу пользователя. Веб-приложение может позволить компоненту ActiveX, чтобы получить заказ сведения для данного заказа идентификатор или веб-приложение может выбрать для упаковки сведения о заказах, как XML и отправить компонентом ActiveX для Обработка. В любом случае после компонент получает сведения о заказе Она позволяет автоматизировать Word для создания и отображения документов накладной для заказ.

(Компонент ActiveXAutomateWord) содержит один класс Счет класс, который предоставляет три метода:
  • В GetData метод использует объекты данных ActiveX (ADO) для извлечения сведений о заказе в учебной базе данных «Борей». Сведения о заказе в m_Data Частная переменная-член. В GetData метод может быть вызван для извлечения данных происходят со стороны клиента.
  • В SendData метод использует Microsoft XML (MSXML) для заполнения m_Data Частная переменная-член с данными заказа предоставленный вызывающим объектом. SendData ожидает один параметр, представляющий DOMDocument Объект сведений о заказах. В SendData метод может быть вызван для отправки сведений заказа через Интернет страница компонента. При таком подходе ASP можно использовать для извлечения данных на сервере и присутствует остров клиента с данными XML, который может использоваться для Создание документа.
  • В MakeInvoice метод автоматизации Word использует для создания документа, содержащего заказать информацию в m_Data Частная переменная-член. Документ, который хранится в Интернете сервер используется в качестве отправной точки для накладной. Вызывающий объект может выбрать Отображение завершенный документ Word вне браузера и сохранить Завершенный документ на диск для последующего использования.
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
				

С помощью компонента ActiveX с веб-страницы

Autoword1.htm показано, как можно использовать GetData метод позволяет извлекать данные заказа компонент ActiveX со стороны клиента и построения документов.

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>
				
Сценарий в Autoword1.htm для отображения используется компонент ActiveX Завершенный документ вне веб-обозревателе. Кроме того, можно сохранить документ завершен и отображения в веб-обозревателе; Однако это требует что сохранить документ Word на диск. Компонент можно сохранить документ как C:\Invoice.doc на локальном диске клиента. Так как компонент ActiveX помеченных как безопасные для выполнения сценариев, клиенту выдается запрос на подтверждение Сохраните.

Если требуется отобразить в веб-обозревателе, завершенный документ изменить вызов MakeInvoice в Autoword1.htm ниже:
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc", True
      window.navigate "c:\invoice.doc"
				
Autoword2.htm показано, как можно использовать SendData метод отправки данных заказа как DOMDocument компонент ActiveX для завершения создания объекта документ. В DOMDocument создается из острова данных XML, расположенный на веб-странице. Для компонента ActiveX правильно обработать данные заказа отправляемых вызывающим XML должен быть правильным и структурированный таким образом, компонент может интерпретировать его как сведения о заказе.

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 и Autoword2.htm, необходимо учитывать, что Создается экземпляр компонента ActiveX, тег <object> вместо the<b00></b00></object>Функция CreateObject функция. С помощью тега <object> предназначено для Включите автоматическую загрузку компонента ActiveX для пользователей, не уже установлен компонент. Если пользователь посетит один из этих страниц и компонент не установлен, компонент загружается из шкафа CAB-файл в URL-адрес, указанный в<b00></b00></object>БАЗА КОДА атрибут. В зависимости от параметров безопасности пользователя в Интернете Обозреватель, сначала появляется запрос на подтверждение загрузки.

ПРИМЕЧАНИЕ: Создавался CAB-файл, включенный в Autoword.exe Мастера пакетов и развертывания для Visual Basic. Компонент ActiveX Пакет помечается как безопасный для сценариев и инициализации, но не цифровой подписью.

Для получения дополнительных сведений о создании компонента Интернет загрузки, цифровые подписи и маркировка компонентов как безопасный для сценариев и Инициализация, просмотра веб-узлов Microsoft Developer Network (MSDN):
Подписывание и проверка кода сертификатом Authenticode.
http://msdn2.Microsoft.com/en-us/library/ms537364.aspx

Безопасный инициализацию и сценарии для элементов управления ActiveX
http://msdn2.Microsoft.com/en-us/library/Aa751977.aspx

Ссылки

Для получения дополнительных сведений щелкните следующие номера статей базы знаний Майкрософт:
257757ИНФОРМАЦИЯ: Автоматизация Microsoft Office для автоматического выполнения является не рекомендуется или поддерживаемых
270906 Как создать документ в формате (RTF) текст в формате RTF поток в Microsoft Word с помощью ASP
(c) Корпорация Майкрософт корпорация 2001 все права Зарезервировано. Взносы, Лори б. Тернер, корпорация Майкрософт.

Свойства

Код статьи: 286023 - Последний отзыв: 6 октября 2011 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Ключевые слова: 
kbdownload kbautomation kbhowto kbmt KB286023 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:286023

Отправить отзыв

 

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