Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để sử dụng một thành phần VB ActiveX cho tự động hóa từ từ Internet Explorer

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:286023
TÓM TẮT
Bài viết này chứng tỏ làm thế nào bạn có thể sử dụng một ActiveX thành phần cho client-side tự động hóa của từ từ một trang Web đó được kết xuất trong Internet Explorer. Có rất nhiều lợi ích để sử dụng một thành phần ActiveX từ một trang Web thay vì của kịch bản được nhúng trong trang Web riêng của mình:
  • Nếu bạn đã có Visual Basic mã mà tự động hóa Sử dụng Microsoft Word, bạn có thể lại mã của bạn trong trình duyệt bằng cách chuyển đổi của bạn Visual Basic dự án một ActiveX EXE hoặc DLL ActiveX một.
  • Word không được đánh dấu an toàn cho kịch bản. Tùy thuộc vào thiết đặt bảo mật trong Internet Explorer, tự động hóa từ mã trong kịch bản có thể không chạy hoặc người sử dụng có thể được nhắc nhở với một cảnh báo bảo mật. Giả định rằng bạn Thành phần ActiveX đáp ứng các nguyên tắc nhất định, nó có thể được đánh dấu an toàn cho kịch bản để tránh những vấn đề an ninh.
  • Visual Basic có nhiều tính năng mà bạn không thể sử dụng với kịch bản trong một trang Web. Ví dụ, một tính năng mà có sẵn cho trực quan Cơ bản nhưng không phải để trang Web script là khả năng để gọi cho các ứng dụng Windows giao diện lập trình (API).
Một kịch bản phát triển phổ biến là để cho người dùng với một trang Web giao diện để tạo một tài liệu Word bằng cách sử dụng dữ liệu từ một số nguồn bên ngoài hoặc logic. Mặc dù bạn có thể sử dụng tự động hóa từ phía máy chủ để tạo ra các tài liệu và dòng nó trở lại cho khách hàng, có rất nhiều hạn chế cho việc sử dụng một cách tiếp cận phía máy chủ có liên quan đến tự động hóa từ. Nhược điểm chính là khả năng mở rộng; Từ một máy chủ tự động hóa rất tài nguyên-chuyên sâu và không khuyến khích cho thế hệ tài liệu trên máy chủ Web.

Bằng cách sử dụng một ActiveX thành phần để thực hiện các thế hệ tài liệu tại các khách hàng, bạn có thể di chuyển tự động hóa từ tài nguyên-chuyên sâu từ các máy chủ Web. Điều này là các giải pháp được trình bày bởi các thành phần ActiveX mẫu đó là thảo luận trong bài viết này. Mặc dù mẫu là cụ thể cho tự động hóa từ, cùng một nguyên tắc có thể được áp dụng để tự động hoá khác Microsoft Office các ứng dụng, chẳng hạn như Microsoft Excel.
THÔNG TIN THÊM

Tải về mẫu

AutoWord.exe chứa dự án Visual Basic ActiveX DLL, Word tài liệu, và các trang Web này được mô tả ở đây bài viết.

Các tập tin sau đây có sẵn để tải về từ Microsoft Download Trung tâm:
Ngày phát hành: Tháng tư 17, 2001

Để thêm thông tin về làm thế nào để tải xuống Microsoft Hỗ trợ tập tin, hãy bấm số bài viết sau đây để xem các bài viết trong các Cơ sở kiến thức Microsoft:
119591 Làm thế nào để có được Microsoft hỗ trợ tập tin từ các dịch vụ trực tuyến
Microsoft đã quét vi-rút cho tệp này. Microsoft sử dụng nhiều nhất phần mềm phát hiện vi rút hiện tại đã có sẵn trên ngày mà các tập tin đã được đăng. Các tập tin được lưu trữ trên tăng cường bảo mật máy chủ giúp ngăn ngừa bất kỳ thay đổi không được phép để các tập tin.

Thiết lập mẫu

Sau khi bạn tải về Autoword.exe, hãy làm theo các bước sau để thiết lập mẫu:
  1. Tạo một thư mục có tên là hóa đơn trong thư mục ảo gốc của máy chủ Web của bạn. (Thư mục ảo gốc mặc định là C:\Inetpub\Wwwroot.)
  2. Giải nén các tập tin trong Autoword.exe để hóa đơn thư mục.
  3. Mở Autoword1.htm trong một văn bản hoặc chỉnh sửa và thay thế tài liệu tham khảo để YourWebServer trong tất cả các URL với tên của máy chủ Web của bạn. Tương tự, thay thế YourSQLServer trong chuỗi kết nối với tên máy chủ SQL của bạn mà chứa cơ sở dữ liệu mẫu Northwind.

    LƯU Ý: Nếu bạn không có một máy chủ SQL có sẵn với Northwind mẫu cơ sở dữ liệu, bạn có thể sửa đổi chuỗi kết nối để sử dụng Microsoft Truy cập Northwind mẫu cơ sở dữ liệu để thay thế. Kết nối với truy cập Northwind mẫu cơ sở dữ liệu tương tự như dưới đây:
    sConn = "provider=microsoft.jet.oledb.4.0; data source=" & _        "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"					
  4. Mở Autoword2.htm trong một văn bản hoặc chỉnh sửa và thay thế tài liệu tham khảo để YourWebServer trong tất cả các URL với tên của máy chủ Web của bạn.
  5. Khởi động Internet Explorer. Bạn có thể duyệt để http://YourWebServer/invoice/AutoWord1.htm và http://YourWebServer/invoice/AutoWord2.htm để kiểm tra kịch bản. Khi bạn đầu tiên truy cập vào một trong các trang này, bạn sẽ được nhắc để tải về ActiveX thành phần.
Các thành phần Visual Basic ActiveX mẫu và tập lệnh mô tả chi tiết hơn trong các phần theo.

Visual Basic ActiveX thành phần

Các thành phần Visual Basic ActiveX trong mẫu này tương tác với Trang web script để tạo ra một tài liệu hóa đơn đặt hàng theo yêu cầu của người dùng. Ứng dụng Web có thể cho phép các thành phần ActiveX để có được thứ tự thông tin cho một ID thứ tự nhất định, hoặc các ứng dụng Web có thể chọn để gói thông tin đặt hàng như XML và gửi cho các thành phần ActiveX cho chế biến. Trong cả hai trường hợp, sau khi các thành phần lấy được thông tin đặt hàng, nó có thể tự động từ để xây dựng và hiển thị các tài liệu hóa đơn cho các đặt hàng.

(Thành phần) ActiveXAutomateWord) chứa một lớp duy nhất, các Hoá đơn lớp, mà cho thấy nhiều ba phương pháp:
  • Các GetData phương pháp sử dụng ActiveX Data Objects (ADO) để lấy thông tin về đơn đặt hàng trong cơ sở dữ liệu mẫu Northwind. Thông tin đặt hàng lưu trữ trong các m_Data thành viên tư nhân biến. Các GetData phương pháp có thể được gọi là để cho phép khai thác dữ liệu xảy ra phía khách hàng.
  • Các SendData phương pháp sử dụng Microsoft XML (MSXML) để điền vào các m_Data thành viên tư nhân biến với thông tin đặt hàng là cung cấp bởi người gọi. SendData hy vọng một tham số đại diện cho một DOMDocument đối tượng cho các thông tin đặt hàng. Các SendData phương pháp có thể được gọi là để gửi thông tin đặt hàng từ trang Web Trang để các thành phần. Với cách tiếp cận này, bạn có thể sử dụng ASP để giải nén dữ liệu phía máy chủ và hiện nay các khách hàng với dữ liệu XML một hòn đảo mà có thể được sử dụng cho thế hệ tài liệu.
  • Các MakeInvoice phương pháp sử dụng tự động hóa từ để xây dựng một tài liệu có chứa các đặt thông tin trong các m_Data thành viên tư nhân biến. Một tài liệu được lưu trữ trên Web máy chủ được sử dụng như một điểm khởi đầu cho hóa đơn. Người gọi có thể chọn để hiển thị tài liệu Word đã hoàn thành ở bên ngoài của trình duyệt hoặc lưu các hoàn thành tài liệu để một đĩa để sử dụng sau này.
Invoice.CLS
Option ExplicitPrivate Type InvoiceData    OrderID As String    OrderDate As Date    CustID As String    CustInfo As String    ProdInfo As VariantEnd TypePrivate m_Data As InvoiceDataPublic 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.CloseEnd SubPublic 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 = vArrayEnd SubPublic 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				

Bằng cách sử dụng các thành phần ActiveX từ một trang Web

Autoword1.htm chứng tỏ làm thế nào bạn có thể sử dụng các GetData phương pháp để cho phép các thành phần ActiveX truy xuất dữ liệu thứ tự phía khách hàng và xây dựng các tài liệu.

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>				
Đoạn mã trong Autoword1.htm sử dụng thành phần ActiveX để hiển thị các hoàn thành tài liệu bên ngoài của trình duyệt. Bạn cũng có thể chọn để cứu các hoàn thành tài liệu và hiển thị nó trong trình duyệt; Tuy nhiên, làm như vậy đòi hỏi rằng tài liệu Word được lưu vào đĩa. Các thành phần có thể lưu tài liệu Theo C:\Invoice.doc trên ổ đĩa địa phương của khách hàng. Bởi vì các thành phần ActiveX là đánh dấu an toàn cho kịch bản, khách hàng được nhắc xác nhận các tiết kiệm.

Nếu bạn muốn hiển thị các tài liệu đã hoàn thành trong trình duyệt, thay đổi cuộc gọi đến MakeInvoice trong Autoword1.htm để sau đây:
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc", True      window.navigate "c:\invoice.doc"				
Autoword2.htm chứng tỏ làm thế nào bạn có thể sử dụng các SendData phương pháp để gửi dữ liệu thứ tự như một DOMDocument đối tượng để các thành phần ActiveX cho việc tạo các đã hoàn thành tài liệu. Các DOMDocument được tạo ra từ một dữ liệu XML hòn đảo mà nằm trên trang Web. Đối với các thành phần ActiveX đúng cách xử lý thông tin đặt hàng là được gửi bởi người gọi, XML E phải tốt được hình thành và cấu trúc để các thành phần có thể giải thích nó như thông tin đặt hàng.

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-lotMarkets Boise ID 83720USA</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>				
Trong cả hai Autoword1.htm và Autoword2.htm, bạn nên lưu ý rằng các Thành phần ActiveX instantiated theo cách của một từ khóa <object> thay vì the<b00></b00></object>CreateObject chức năng. Mục đích của việc sử dụng các từ khóa <object> là Kích hoạt tính năng tự động tải về các thành phần ActiveX cho người dùng rằng không đã có các thành phần cài đặt. Nếu một người dùng truy cập một trong các trang này và các thành phần không được cài đặt, các thành phần được tải về từ nội các Tập tin (CAB) tại URL được chỉ định trong các<b00></b00></object>CODEBASE thuộc tính. Tùy thuộc vào thiết đặt bảo mật của người dùng trong Internet Thám hiểm, họ lần đầu tiên có thể nhận được một dấu nhắc để xác nhận việc tải xuống.

LƯU Ý: CAB tệp được bao gồm trong Autoword.exe được tạo ra với các gói và triển khai Wizard cho Visual Basic. Các thành phần ActiveX trong các gói phần mềm được đánh dấu an toàn cho kịch bản và khởi tạo, nhưng không phải là ký điện tử.

Để biết thêm về việc tạo Internet thành phần tải, kỹ thuật số ký kết, và đánh dấu các thành phần như là an toàn cho kịch bản và khởi tạo, xem các trang Web mạng nhà phát triển của Microsoft (MSDN) sau đây:
Việc đăng ký và kiểm tra mã với với mã xác thực
http://msdn2.Microsoft.com/en-us/Library/ms537364.aspx

An toàn khởi tạo và script cho điều khiển ActiveX
http://msdn2.Microsoft.com/en-us/Library/Aa751977.aspx
THAM KHẢO
Để biết thêm chi tiết, nhấp vào số bài viết sau để xem các bài viết trong cơ sở kiến thức Microsoft:
257757Thông tin: Tự động hóa của văn phòng để thực hiện không giám sát là không khuyến khích hoặc được hỗ trợ
270906 Làm thế nào để sử dụng ASP để tạo một tài liệu định dạng (RTF) văn bản phong phú để dòng suối để Microsoft Word
(c) Microsoft Corporation 2001, tất cả các quyền Dự trữ. Những đóng góp của Lori B. Turner, Microsoft Corporation.
tự động hoá tự động tự động hóa createobject msword 2000 2002 XP tức là WD2003 WD2007

Thuộc tính

ID Bài viết: 286023 - Xem lại Lần cuối: 10/06/2011 04:12:00 - Bản sửa đổi: 3.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 KbMtvi
Phản hồi
">