Makale numarası: 285176 - Son Gözden Geçirme: 23 Ekim 2007 Salı - Gözden geçirme: 8.1

Word, XML, SQL Server'ı kullanarak bir istemci tarafı posta birleştirme gerçekleştirmek için otomatikleştirme

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, Microsoft Word otomatik hale getirmek için etiket adres mektup birleştirme gerçekleştirmek için istemci tarafı komut dosyasından gösterilmiştir. Word, XML verilerini, adres-mektup birleştirme için veri kaynağı olarak kullanmak için doğrudan bir yöntemi yok. Active Server Pages (ASP) örnek gösterilmiştir Web sunucusundan bir istemciye bir XML kayıt akıp kodu. Istemci tarafı komut dosyası bu XML veri, istemcinin yerel olarak ve sonra da Word'ün adres mektup birleştirme veri kaynağı olarak yerel metin dosyası kullanarak adres-mektup birleştirmeyi gerçekleştirdiğinizde otomatikleştirir sınırlandırılmış bir metin dosyasına dönüştürür.

Daha fazla bilgi

ActiveX Data Objects (ADO) 2.5 ve daha sonra XML biçiminde kalıcı, kayıt verilerini sağlar. ASP kullanarak Web sunucusunda bir veritabanından bir ADO kayıt kümesi oluşturmak ve verileri XML olarak istemcilerinize döndürün. Istemciler, XML kayıt kümesi'ni okuyup gerektiği gibi verileri işlemek için ADO kullanabilirsiniz. XML ile ADO kullanma hakkında ek kaynaklara bağlantılar için bu makalenin "Başvurular" bölümüne bakın.

Gösterim amacıyla, aşağıdaki örnek, pubs örnek veritabanını Microsoft SQL Server'da kullanır. Bununla birlikte, benzer bir kod bir ADO yapabilirsiniz herhangi bir veritabanı ile bir adres-mektup birleştirme gerçekleştirmek için kullanılan bağlantı.

ÖRNEK

  1. Web sunucunuzda WordMailMerge adlı bir sanal dizin oluşturun.
  2. Aşağıda verilen kod içeren default.asp adlı bir dosya oluşturmak için Not Defteri'ni kullanın. Dosyayı WordMailMerge sanal dizine kaydedin.
    <%@ 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. Aşağıda verilen kod içeren getdata.asp adlı bir dosya oluşturmak için Not Defteri'ni kullanın. Dosyayı WordMailMerge sanal dizine kaydedin.
    <%@ 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. Web sunucunuza işaret edecek biçimde default.ASP sServer değişkeni değiştirmek ve sSQLServer değişkeni getdata.asp için SQL Server'ı işaret edecek biçimde değiştirin.
  5. ınternet Explorer'ı başlatın ve http:// için gözatın <sunucuadı > /WordMailMerge/Default.asp(WHERE <sunucuadı > Web sunucunuzun adıdır).
  6. Word otomatik hale getirmek ve adres-mektup birleştirme gerçekleştirmek için Web sayfasındaki düğmeyi tıklatın. Otomasyon işlemi tamamlandığında, Word adres-mektup birleştirme sonuçlanan mektup etiketlerini içeren yeni bir belge görüntülenir.

Referanslar

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
195826  (http://support.microsoft.com/kb/195826/ ) CreateObject istemci tarafında çalışan komut dosyaları başarısız olur.
258512  (http://support.microsoft.com/kb/258512/ ) Word'deki Adres mektup birleştirme için posta etiketleri oluşturmak için Visual Basic otomatikleştirme
278260  (http://support.microsoft.com/kb/278260/ ) Word otomatik hale getirmek ve adres mektup birleştirme için posta etiketleri oluşturmak için Microsoft Foundation Classes (MFC) nasıl kullanılır
263247  (http://support.microsoft.com/kb/263247/ ) Bir ADO kayıt kümesini XML'DEN nasıl elde edilir
252767  (http://support.microsoft.com/kb/252767/ ) Visual Basic'te bir ADO kayıt kümesi XML betimlemesi alma

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Active Server Pages 4.0
Anahtar Kelimeler: 
kbmt kbmerge kbexpertiseinter kbautomation kbhowto KB285176 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:285176  (http://support.microsoft.com/kb/285176/en-us/ )