Autor: Yang Zhongxun Especialização: Desenvolvimento e aplicação de software de computador Habilidade linguística: TOFEL633 GRE2140
E-mail: [email protected]
No desenvolvimento real do sistema Mis, às vezes precisamos baixar os dados do relatório na página atual para o computador local no formato de um documento Word. Esta implementação não é difícil. Mas às vezes precisamos fazer algumas configurações para o formato do documento Word baixado, como cor do título, tamanho da fonte, espaçamento entre palavras, etc. Neste caso, temos que usar a função macro que vem com o Word.
Por exemplo, queremos exibir o título deste relatório no seguinte formato em um documento Word: fonte 14 pontos, negrito e centralizado. Primeiro precisamos gravar o comando da macro correspondente no Word. Abra o Word, crie um novo documento, digite manualmente uma linha de texto e selecione Ferramentas-> Macro-> comando Gravar Nova Macro, dê à nova macro um nome como Macro1 e execute as ações acima (tamanho 14, negrito, centro -aligned), o Word salva automaticamente essas ações como comandos Vbscript correspondentes. Em seguida, selecione Ferramentas->Macro->Comando Macro, selecione a macro Macro1 que acabamos de definir e você poderá visualizar seu conteúdo. Neste exemplo, o comando de macro que salvamos é o seguinte:
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 'Alinhamento central
Selection.Font.Bold = wdToggle 'Exibição em negrito
Selection.Font.Size = 14 '
Como a linguagem de script do comando macro é Vbscript, podemos usar a instrução acima em VB sem fazer nenhuma alteração. Desta forma, podemos escrever o seguinte código VB para realizar as funções que necessitamos. O código é o seguinte:
WdApp.Selection.Font.Bold = wdToggle 'Exibição em negrito
WdApp.Selection.Font.Size = fonte tamanho 14 '14
WdApp.Selection.TypeText ("Título do Relatório") 'Título do Relatório
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter 'Alinhar no centro
WdApp.Selection.Font.Bold = wdToggle 'Cancelar negrito.
Da mesma forma, se quisermos realizar outro processamento no documento Word, basta repetir os passos acima. A seguir fornece um exemplo completo do meu processamento de documentos do Word:
Private Function SaveAsWord(ByRef MyRecord As Recordset, ByVal DocFileName As String, ByRef OutMessage As String) As Integer
'********************************************** ***********************
'
'Descrição: Salva os dados do conjunto de dados como um arquivo DOC
'
'parâmetro:
'
'Conjunto de dados MyRecord
'DocFileName WORD nome do arquivo (sem caminho, consulte a variável de instância sPath para o caminho)
'Retorna informações da operação OutMessage
'
'Retorno: 1 sucesso -1 falha
'
'********************************************** ***********************
'Inicializar o aplicativo Word
err.Limpar
Em caso de erro, vá para Err_All
Dim WdApp como Word.Application
Set WdApp = CreateObject("Word.Application")
'Inserir dados
Dim colloop As Integer 'Número da coluna
Dim rowloop como número de linha inteiro
Dim colMax As Integer 'Número de colunas
Dim rowMax As Integer 'Número de linhas
Dim wdcell como largura inteira
Dim UnitEnd As Integer 'Ponto final de interceptação
Dim UnitName As String 'Nome da unidade
Dim BbDate As String 'Período do relatório
wdcélula=12
colMax = MeuRegistro.Campos.contagem
rowMax = MeuRecord.RecordCount
WdApp.Documents.Add
'Obtém a unidade do relatório
UnitEnd = InStr(sBBDetail, "período")
UnitName = Mid(sBBDetail, 1, UnitEnd - 2)
BbDate = Médio(sBBDetail, UnitEnd, Len(sBBDetail))
Se MyRecord.Fields.count >= 10 Então
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientLandscape
Outro
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientPortrait
Terminar se
'Nome do relatório
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.Font.Size = 14
WdApp.Selection.TypeText (sbbmc)
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.TypeParagraph
'Nome da unidade de relatório
WdApp.Selection.Font.color = wdColorBlack
WdApp.Selection.Font.Size = 11
WdApp.Selection.TypeText(NomedaUnidade)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
'Período do relatório
WdApp.Selection.TypeText(BbDate)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
'Gerar cabeçalhos de colunas
'wdApp.Selection.HomeKey wdLine, wdExtend
'dApp.Selection.Font.Bold = wdToggle
WdApp.ActiveDocument.Tables.Add WdApp.Selection.Range, rowMax, colMax
Dim i como inteiro
Fazer
Para colloop = 0 Para colMax - 1
WdApp.Selection.Font.Size = 9
Se eu = 0 então
'O título da tabela é exibido em negrito
WdApp.Selection.Font.Bold = wdToggle
'Define a cor de fundo da linha do título da tabela como cinza, com escala de cinza de 30
Com WdApp.Selection.Cells
Com .Shading
.Textura = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorGray30
Terminar com
Terminar com
Terminar se
'A última linha está alinhada à direita e o resto está alinhado à esquerda
Se eu > 0 Então
Se MyRecord.Fields.Item(colloop).Name = "ZBMC" Ou MyRecord.Fields.Item(colloop).Name = "Nome do indicador" Então
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
Outro
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Terminar se
Terminar se
Se i = 0 And (MyRecord.Fields.Item(colloop).Name = "SXH" Ou MyRecord.Fields.Item(colloop).Name = "Número de sequência") Então
WdApp.Selection.TypeText ("número de série")
Outro
WdApp.Selection.TypeText (CStr(MyRecord.Fields.Item(colloop).value))
Terminar se
Se (i <> rowMax - 1 Ou (i = rowMax - 1 E colloop <colMax - 1)) Então
WdApp.Selection.MoveRight (wdcell)
Terminar se
Próximo
eu = eu + 1
MeuRecord.MoveNext
Loop até MyRecord.EOF
WdApp.ActiveDocument.SaveAs DocFileName, 0, Falso, "", Verdadeiro, "", Falso, Falso, Falso, Falso, Falso
WdApp.Quit
Salvar como palavra = 1
Função de saída
Err_Todos:
Definir WdApp = Nada
Salvar como palavra = -1
OutMessage = err.Descrição
Função de saída
End Function
Ok, até agora, acho que você tem alguma compreensão do uso de comandos de macro do Word para desenvolver componentes ASP em VB. Contanto que você o use mais, você se familiarizará com ele rapidamente.