ID Artikel: 285176 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0

Cara mengotomatiskan Word untuk mengoperasikan gabungan surat sisi klien menggunakan XML dari SQL Server

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menunjukkan bagaimana untuk mengotomatisasi Microsoft Word dari client-side script untuk melakukan mail gabungan untuk label. Word tidak memiliki metode langsung untuk menggunakan data XML sebagai sumber data gabungan surat. Sampel menggambarkan Active Server Pages (ASP) kode yang aliran recordset XML dari Web server untuk klien. Sisi klien script mengkonversi data XML ini ke berkas berpembatas teks yang lokal untuk klien dan kemudian mengotomatiskan Word untuk mengoperasikan gabungan surat dengan menggunakan teks lokal file sebagai sumber data gabungan surat.

INFORMASI LEBIH LANJUT

ActiveX Data objek (ADO) 2.5 dan kemudian memungkinkan recordset data untuk bertahan dalam XML format. Menggunakan ASP pada Web server, Anda dapat membangun ADO recordset dari database dan kembali data XML untuk klien Anda. Dalam mengaktifkan, klien dapat menggunakan ADO membaca XML recordset dan memanipulasi data sebagai diperlukan. Lihat bagian "Referensi" dari artikel ini untuk link ke tambahan sumber daya menggunakan ADO dengan XML.

Untuk tujuan ilustrasi, contoh berikut menggunakan sampel Pub database di Microsoft SQL Server. Namun, kode yang sama mungkin digunakan untuk mengoperasikan gabungan surat dengan setiap database yang Anda dapat membuat ADO sambungan.

Sampel

  1. Pada server Web Anda, membuat direktori virtual yang disebut WordMailMerge.
  2. Gunakan Notepad untuk menciptakan sebuah file bernama Default.asp yang berisi kode yang diberikan di bawah ini. Simpan file ke WordMailMerge virtual direktori.
    <%@ Language=VBScript %>
    <HTML>
    <BODY>
    <SCRIPT LANGUAGE=VBScript>
    Sub CreateDataDoc(oApp)
      ' Declare variables.
      Dim sServer,oDoc,oRS,sTemp,sHead,oRange,oField
      
      ' Place your server's name here.
      sServer = "<servername>"
      ' Create a new document.
      Set oDoc = oApp.Documents.Add
      ' Create a new recordset.
      Set oRS = CreateObject("ADODB.Recordset")
      ' Open the XML recordset from the server
      oRS.Open "http://" & sServer & "/WordMailMerge/Getdata.asp"
      ' Convert the recordset to a string.
      sTemp = oRS.GetString(2, -1, vbTab)  ' 2 = adClipString
             
      ' Append the field names to the front of the string.
      For Each oField In oRS.Fields
        sHead = sHead & oField.Name & vbTab
      Next
            
      ' Strip off the last tab.
      sTemp = Mid(sHead, 1, Len(sHead) - 1) & vbCrLf & sTemp
             
      ' Get a range object and insert the text into the document.
      Set oRange = oDoc.Range
      oRange.Text = sTemp
      
      ' Convert the text to a table.
      oRange.ConvertToTable vbTab
      ' Save the document to a temp file.
      oDoc.SaveAs "C:\data.doc"
      ' Close the document (no save).
      oDoc.Close False
    End Sub
    
    
    Sub ButtonClick()
      Dim oApp
      Dim oDoc
      Dim oMergedDoc
      
      ' Create an instance of Word.     
      Set oApp = CreateObject("Word.Application")
     
      ' Create our data file.
      CreateDataDoc oApp
      
      ' Add a new document.
      Set oDoc = oApp.Documents.Add
      With oDoc.MailMerge
        ' Add our fields.
        .Fields.Add oApp.Selection.Range, "au_fname"
        oApp.Selection.TypeText " "
        .Fields.Add oApp.Selection.Range, "au_lname"
        oApp.Selection.TypeParagraph
        .Fields.Add oApp.Selection.Range, "city"
        oApp.Selection.TypeText ", "
        .Fields.Add oApp.Selection.Range, "state"
        oApp.Selection.TypeParagraph
        .Fields.Add oApp.Selection.Range, "zip"
        oApp.Selection.TypeParagraph
               
        ' Create an autotext entry.
        Dim oAutoText
        Set oAutoText = oApp.NormalTemplate.AutoTextEntries.Add _
        ("MyLabelLayout", oDoc.Content)
        oDoc.Content.Delete
        .MainDocumentType = 1  ' 1 = wdMailingLabels
             
        ' Open the saved data source.
        .OpenDataSource "C:\data.doc"
    
        ' Create a new document.
        oApp.MailingLabel.CreateNewDocument "5160", "", _
             "MyLabelLayout", , 4  ' 4 = wdPrinterManualFeed
    
        .Destination = 0  ' 0 = wdSendToNewDocument
        ' Execute the mail merge.
        .Execute
    
        oAutoText.Delete
      End With
           
      ' Close the mail merge edit document.
      oDoc.Close False
      ' Get the current document.
      Set oMergedDoc = oApp.ActiveDocument
      ' Show Word to the user.
      oApp.Visible = True
      
      ' Uncomment these lines to save the merged document locally.
      'oMergedDoc.SaveAs "C:\test.doc"
      'oMergedDoc.Close False
      'oApp.Quit False
    End Sub
    </SCRIPT>
    <INPUT type=button value="Create Word Document" onclick="VBScript:ButtonClick">
    </BODY>
    </HTML>
    					
  3. Gunakan Notepad untuk menciptakan sebuah file bernama Getdata.asp yang berisi kode yang diberikan di bawah ini. Simpan file ke WordMailMerge virtual direktori.
    <%@ Language=VBScript %>
    <%
      Dim oConn,oRS,strConn,sSQLServer
      
      ' Build the connection string. Replace <username> and <strong password> with
      ' the username and password of an account that has permissions on the database.
      sSQLServer = "<servername>"
      strConn = "Provider=SQLOLEDB.1;Persist Security Info=False;" & _
                "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=" & sSQLServer
      ' Set our return content type.
      Response.ContentType = "text/xml"
      
      ' Create a connection.
      set oConn = Server.CreateObject("ADODB.Connection")
      ' Open the connection.
      oConn.Open strConn
      ' Execute the SQL statement.
      set oRS = oConn.Execute(?SELECT * FROM AUTHORS?)
      ' Save the recordset in the Response object.
      oRS.Save Response,1
    %>
    					
  4. Perubahan sServer variabel dalam Default.asp untuk menunjuk ke server Web Anda, dan mengubah The sSQLServer variabel dalam Getdata.asp untuk menunjuk ke SQL Server.
  5. Jalankan Internet Explorer dan browse ke http://ServerNameMengatakan /WordMailMerge/Default.asp (di manaServerNamemengatakan nama server Web Anda).
  6. Klik tombol pada halaman Web untuk mengotomatisasi kata dan mengoperasikan gabungan surat. Ketika otomatisasi lengkap, kata muncul dengan yang baru dokumen yang berisi label surat yang dihasilkan dari surat menggabungkan.

REFERENSI

Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
195826  (http://support.microsoft.com/kb/195826/ ) CreateObject gagal dari script sisi klien
258512  (http://support.microsoft.com/kb/258512/ ) Cara mengotomatiskan Word dari Visual Basic untuk membuat gabungan surat untuk label surat
278260  (http://support.microsoft.com/kb/278260/ ) Cara menggunakan Microsoft Foundation Classes (MFC) untuk mengotomatisasi kata dan membuat gabungan surat untuk label surat
263247  (http://support.microsoft.com/kb/263247/ ) Cara mendapatkan ADO recordset dari XML
252767  (http://support.microsoft.com/kb/252767/ ) Bagaimana untuk mendapatkan representasi XML ADO recordset dalam Visual Basic

Berlaku bagi:
  • Microsoft Office Word 2007
  • Microsoft Word 2000
  • Microsoft Active Server Pages 4.0
Kata kunci: 
kbmerge kbexpertiseinter kbautomation kbhowto kbmt KB285176 KbMtid
Penerjemahan MesinPenerjemahan 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:285176  (http://support.microsoft.com/kb/285176/en-us/ )