В этой статье показано, как использовать элемент 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
(http://download.microsoft.com/download/Word2002/Sample/1.0/WIN98MeXP/EN-US/Autoword.exe)
Дата выпуска: апрель
17, 2001
Для получения дополнительных сведений о загрузке Microsoft
Файлы поддержки, обратитесь к следующей статье в
База знаний корпорации Майкрософт:
119591
(http://support.microsoft.com/kb/119591/EN-US/
)
Как загрузить файлы поддержки Майкрософт из Интернета
Корпорация Майкрософт проверила этот файл на наличие вирусов. Корпорация Майкрософт использует наиболее
текущего антивирусного программного обеспечения на дату, файл
была учтена. Файл хранится на защищенных серверах, которые помогают
для файла предотвращает его несанкционированное изменение.
Настройка образца
После загрузки Autoword.exe выполните следующие действия
Настройка образца:
- Создайте папку с именем «счет» в виртуальном корневом каталоге
веб-сервера. (Виртуальный корневой каталог по умолчанию —
C:\Inetpub\Wwwroot).
- Извлеките файлы из Autoword.exe к счету
папка.
- Откройте в текстовом редакторе или редакторе 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"
- Откройте в текстовом редакторе или редакторе HTML Autoword2.htm и замена
ссылки на YourWebServer в все URL-адреса с именем веб-сервера.
- Запустите обозреватель 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 для создания и отображения документов накладной для
заказ.
(Компонент ActiveX
AutomateWord) содержит один класс
Счет класс, который предоставляет три метода:
- В 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):
Для получения дополнительных сведений щелкните следующие номера статей базы знаний Майкрософт:
257757
(http://support.microsoft.com/kb/257757/
)
ИНФОРМАЦИЯ: Автоматизация Microsoft Office для автоматического выполнения является не рекомендуется
или поддерживаемых
270906
(http://support.microsoft.com/kb/270906/EN-US/
)
Как создать документ в формате (RTF) текст в формате RTF поток в Microsoft Word с помощью ASP
(c) Корпорация Майкрософт корпорация 2001 все права
Зарезервировано. Взносы, Лори б. Тернер, корпорация Майкрософт.
Код статьи: 286023 - Последнее изменение :: 6 октября 2011 г. - Редакция: 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
(http://support.microsoft.com/kb/286023/en-us/
)