Cara menggunakan komponen VB ActiveX untuk kata otomatisasi dari Internet Explorer

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 286023 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan bagaimana Anda dapat menggunakan ActiveX komponen untuk sisi klien otomasi kata dari halaman Web yang diterjemahkan di Internet Explorer. Ada beberapa manfaat untuk menggunakan komponen ActiveX dari halaman Web yang bukan dari script yang tertanam di halaman Web itu sendiri:
  • Jika Anda sudah memiliki kode Visual Basic yang mengotomatiskan Microsoft Word, Anda dapat menggunakan kembali kode dalam browser dengan mengubah Anda Visual Basic proyek EXE ActiveX atau ActiveX DLL.
  • Word tidak ditandai aman untuk skrip. Tergantung pada pengaturan keamanan di Internet Explorer, kata otomatisasi kode dalam skrip mungkin tidak Run atau pengguna akan diminta dengan peringatan keamanan. Dengan asumsi bahwa Anda Komponen ActiveX memenuhi pedoman tertentu, itu mungkin ditandai aman untuk skrip untuk menghindari masalah keamanan ini.
  • Visual Basic memiliki beberapa fitur yang Anda tidak dapat menggunakan dengan script di halaman Web. Sebagai contoh, salah satu fitur yang tersedia untuk Visual Dasar tetapi tidak untuk halaman Web script adalah kemampuan untuk memanggil aplikasi Windows antarmuka pemrograman (API).
Skenario pengembang yang umum adalah untuk menyajikan pengguna dengan halaman Web antarmuka untuk menciptakan dokumen Word dengan menggunakan data dari beberapa sumber atau logika. Meskipun Anda dapat menggunakan server-side Word Automation untuk menghasilkan dokumen dan mengalir kembali kepada klien, ada banyak kelemahan menggunakan Server-side pendekatan yang melibatkan kata otomatisasi. Kelemahan utama adalah skalabilitas; Kata sangat intensif sumber daya server otomatisasi dan tidak direkomendasikan untuk generasi dokumen pada Web server.

Dengan menggunakan Komponen ActiveX untuk melakukan generasi dokumen pada klien, Anda dapat memindahkan sumber daya-intensif kata otomatisasi dari Web server. Ini adalah solusi yang disajikan oleh komponen ActiveX sampel yang dibahas dalam artikel ini. Meskipun sampel spesifik untuk kata otomatisasi, prinsip yang sama dapat diterapkan untuk mengotomatisasi Office Microsoft lain aplikasi, seperti Microsoft Excel.

INFORMASI LEBIH LANJUT

Men-download sampel

AutoWord.exe berisi proyek Visual Basic ActiveX DLL, kata dokumen, dan halaman Web yang dijelaskan dalam hal ini artikel.

The berkas berikut ini tersedia untuk di-download dari Microsoft Download Pusat:
Autoword.exe
Rilis tanggal: April 17, 2001

Untuk informasi tambahan tentang cara men-download Microsoft Mendukung file, klik nomor artikel di bawah ini untuk melihat artikel di Basis Pengetahuan Microsoft:
119591 Cara mendapatkan berkas Dukungan Microsoft dari Layanan Online
Microsoft telah memindai berkas ini dari virus. Microsoft digunakan paling lunak pendeteksi virus terbaru yang tersedia pada tanggal yang file telah diposting. Berkas tersebut disimpan pada server aman yang membantu mencegah segala perubahan tidak sah terhadap berkas.

Mengatur sampel

Setelah Anda men-download Autoword.exe, ikuti langkah berikut untuk mengatur sampel:
  1. Membuat folder bernama faktur dalam direktori akar virtual server Web Anda. (Default direktori akar virtual C:\Inetpub\Wwwroot.)
  2. Extract file dalam Autoword.exe untuk faktur folder.
  3. Buka Autoword1.htm dalam teks atau HTML editor dan menggantikan referensi YourWebServer dalam semua URL dengan nama server Web Anda. Demikian pula, menggantikan YourSQLServer dalam rangkaian sambungan dengan nama SQL Server yang berisi Northwind sampel database.

    CATATAN: Jika Anda tidak memiliki tersedia SQL Server dengan Northwind database contoh, Anda dapat memodifikasi rangkaian sambungan menggunakan Microsoft Mengakses database contoh Northwind sebaliknya. Sambungan ke Northwind akses database contoh menyerupai berikut ini:
    sConn = "provider=microsoft.jet.oledb.4.0; data source=" & _
            "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
    					
  4. Buka Autoword2.htm dalam teks atau HTML editor dan menggantikan referensi YourWebServer dalam semua URL dengan nama server Web Anda.
  5. Mulai Internet Explorer. Anda dapat browse ke http://YourWebServer/invoice/AutoWord1.htm dan http://YourWebServer/invoice/AutoWord2.htm untuk menguji script. Ketika Anda pertama mengunjungi salah satu halaman-halaman ini, Anda diminta untuk men-download ActiveX komponen.
Komponen Visual Basic ActiveX sampel dan script dijelaskan lebih lanjut di bagian-bagian yang mengikuti.

Komponen ActiveX Visual Basic

Komponen Visual Basic ActiveX dalam sampel ini berinteraksi dengan Halaman web script untuk menghasilkan dokumen faktur pesanan pada permintaan pengguna. Aplikasi Web mungkin memungkinkan komponen ActiveX untuk mendapatkan pesanan informasi untuk ID order tertentu, atau aplikasi Web mungkin memilih untuk paket informasi permintaan sebagai XML dan mengirimkannya ke komponen ActiveX untuk pengolahan. Dalam kedua kasus, setelah komponen memperoleh informasi permintaan, itu dapat mengotomatisasi kata untuk membangun dan menampilkan dokumen faktur untuk urutan.

(Komponen ActiveXAutomateWord) berisi satu kelas, Faktur kelas, yang memperlihatkan tiga metode:
  • The GetData metode menggunakan objek Data ActiveX (ADO) untuk mengekstrak informasi tentang pesanan dalam Northwind sampel database. Informasi order disimpan dalam m_Data variabel anggota pribadi. The GetData metode dapat dipanggil untuk membiarkan ekstraksi data yang terjadi sisi klien.
  • The SendData metode menggunakan Microsoft XML (MSXML) untuk mengisi m_Data variabel anggota pribadi dengan informasi permintaan yang disediakan oleh pemanggil. SendData mengharapkan satu parameter yang mewakili DOMDocument obyek untuk informasi permintaan. The SendData metode dapat dipanggil untuk mengirim informasi permintaan dari Web Halaman untuk komponen. Dengan pendekatan ini, Anda dapat menggunakan ASP untuk mengekstrak data sisi server dan klien dengan data XML pulau yang sekarang dapat digunakan untuk generasi dokumen.
  • The MakeInvoice metode menggunakan kata otomatisasi untuk membangun sebuah dokumen yang berisi memesan informasi dalam m_Data variabel anggota pribadi. Dokumen yang disimpan di Web server digunakan sebagai titik awal untuk faktur. Pemanggil dapat memilih untuk menampilkan dokumen Word selesai di luar browser atau menyimpan dokumen selesai untuk disk untuk digunakan nanti.
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
				

Menggunakan komponen ActiveX dari halaman Web

Autoword1.htm menunjukkan bagaimana Anda dapat menggunakan GetData metode untuk membiarkan komponen ActiveX yang mengambil perintah data sisi klien dan membangun dokumen.

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>
				
Script di Autoword1.htm menggunakan komponen ActiveX untuk menampilkan selesai dokumen di luar browser. Anda juga dapat memilih untuk menyimpan selesai dokumen dan menampilkannya dalam browser; Namun, memerlukan bahwa dokumen Word disimpan ke disk. Komponen dapat menyimpan dokumen sebagai C:\Invoice.doc pada drive lokal klien. Karena komponen ActiveX ditandai aman untuk skrip, klien disarankan untuk mengkonfirmasi Simpan.

Jika Anda ingin menampilkan dokumen selesai dalam browser, mengubah panggilan untuk MakeInvoice dalam Autoword1.htm dengan berikut:
      AutoWord.MakeInvoice "http://YourWebServer/invoice/invoice.doc", True
      window.navigate "c:\invoice.doc"
				
Autoword2.htm menunjukkan bagaimana Anda dapat menggunakan SendData metode untuk mengirim data urutan sebagai DOMDocument objek untuk komponen ActiveX untuk menghasilkan selesai dokumen. The DOMDocument diciptakan dari data XML pulau yang berada pada halaman Web. Untuk komponen ActiveX untuk benar memproses informasi permintaan yang Dikirim oleh pemanggil, XML harus well-formed dan terstruktur sehingga komponen dapat menafsirkannya sebagai informasi permintaan.

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>
				
Dalam kedua Autoword1.htm dan Autoword2.htm, Anda harus mencatat bahwa Komponen ActiveX instantiated dengan cara dari sebuah tag <object>daripada the<b00></b00></object>CreateObject fungsi. Tujuan dari menggunakan <object>tag adalah untuk mengaktifkan otomatis men-download komponen ActiveX bagi pengguna yang tidak sudah memiliki komponen yang diinstal. Jika pengguna mengunjungi salah satu halaman ini dan komponen tidak diinstal, komponen yang di-download dari kabinet (CAB) file pada URL yang ditunjukkan dalam<b00> </b00> </object>CODEBASE atribut. Tergantung pada pengaturan keamanan pengguna di Internet Explorer, mereka pertama akan menerima prompt untuk mengkonfirmasi download.

CATATAN: CAB file yang termasuk dalam Autoword.exe diciptakan dengan Paket dan penyebaran Wizard untuk Visual Basic. Komponen ActiveX dalam paket ditandai aman untuk scripting dan inisialisasi, tetapi tidak ditandatangani secara digital.

Untuk informasi lebih lanjut tentang menciptakan Internet komponen Download, digital menandatangani, dan menandai komponen sebagai aman untuk skrip dan inisialisasi, melihat situs-situs Web Microsoft Developer Network (MSDN) berikut:
Penandatanganan dan memeriksa kode dengan Authenticode
http://msdn2.Microsoft.com/en-us/library/ms537364.aspx

Aman inisialisasi dan Scripting untuk kontrol ActiveX
http://msdn2.Microsoft.com/en-us/library/Aa751977.aspx

REFERENSI

Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel pada Basis Pengetahuan Microsoft:
257757INFO: Otomatisasi dari kantor untuk eksekusi tanpa pengawasan yang tidak dianjurkan atau didukung
270906 Cara menggunakan ASP untuk menghasilkan Rich Text Format (RTF) dokumen ke sungai untuk Microsoft Word
(c) Microsoft Corporation 2001, semua hak Milik. Kontribusi oleh Lori B. Turner, Microsoft Corporation.
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properti

ID Artikel: 286023 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Office Word 2007
  • Microsoft Word 2002
  • Microsoft Word 2000
  • Microsoft Visual Basic 6.0 Professional Edition
Kata kunci: 
kbdownload kbautomation kbhowto kbmt KB286023 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:286023

Berikan Masukan

 

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