Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo demonstra como automatizar o Microsoft Word a partir de script do lado do cliente para executar uma impressão em série para etiquetas. O Word não tem um método directo para utilizar dados XML como origem de dados para uma impressão em série. O exemplo ilustra ASP (Active Server Pages) código sequências um XML conjunto de registos a partir de um servidor Web para um cliente. Script do lado do cliente converte dados XML para um ficheiro de texto delimitado que é o local para o cliente e, em seguida, automatiza Word para efectuar uma impressão em série utilizando o ficheiro de texto local como origem de dados de impressão em série.
ActiveX Data Objects (ADO) 2.5 e versões posteriores permite recordset dados persistentes em formato XML. Utilizando o ASP num servidor Web, pode criar um conjunto de registos ADO a partir de uma base de dados e devolver os dados como XML para os clientes. Por sua vez, os clientes podem utilizar ADO para ler o conjunto de registos XML e manipular os dados conforme necessário. Consulte a secção "Referências" deste artigo para ligações a recursos adicionais sobre a utilização ADO com XML.
Por motivos de ilustração, o exemplo seguinte utiliza a pubs de dados de exemplo do Microsoft SQL Server. No entanto, é possível utilizar código semelhante para efectuar uma impressão em série com qualquer base de dados à qual pode efectuar um ADO ligação.
No servidor Web, crie um directório virtual que é chamado WordMailMerge.
Utilize o bloco de notas para criar um ficheiro denominado Default.asp contém o código fornecido abaixo. Guardar o ficheiro para o directório virtual WordMailMerge.
<%@ 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>
Utilize o bloco de notas para criar um ficheiro denominado getdata.asp contém o código fornecido abaixo. Guardar o ficheiro para o directório virtual WordMailMerge.
<%@ 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
%>
Alterar a variável sServer default.asp para apontar para o servidor Web e alterar a variável sSQLServer getdata.asp para apontar para o SQL Server.
Inicie o Internet Explorer e navegue para http:// < nomedoservidor > /WordMailMerge/Default.asp(WHERE < nomedoservidor > é o nome do seu servidor Web).
Clique no botão na página Web para automatizar o Word e executar a impressão em série. Quando automatização estiver concluída, o Word aparece com um novo documento que contenha etiquetas resultaram da impressão em série.
Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
195826
(http://support.microsoft.com/kb/195826/
)
CreateObject Falha a partir de scripts do lado do cliente
258512
(http://support.microsoft.com/kb/258512/
)
Como automatizar o Word a partir do Visual Basic para criar uma impressão em série para etiquetas de endereço
278260
(http://support.microsoft.com/kb/278260/
)
Como utilizar o Microsoft Foundation Classes (MFC) para automatizar o Word e criar uma impressão em série para etiquetas de endereço
263247
(http://support.microsoft.com/kb/263247/
)
Como obter um conjunto de registos ADO a partir de XML
252767
(http://support.microsoft.com/kb/252767/
)
Como obter representação XML de um conjunto de registos ADO no Visual Basic
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 285176
(http://support.microsoft.com/kb/285176/en-us/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.