Autor: Yang Zhongxun Especialidad: desarrollo y aplicación de software informático Capacidad lingüística: TOFEL633 GRE2140
Correo electrónico: [email protected]
En el desarrollo real del sistema Mis, a veces necesitamos descargar los datos del informe en la página actual a la computadora local en el formato de un documento de Word. Esta implementación no es difícil. Pero a veces necesitamos realizar algunas configuraciones para el formato del documento de Word descargado, como el color del título, el tamaño de fuente, el espaciado entre palabras, etc. En este caso, tenemos que usar la función de macro que viene con Word.
Por ejemplo, queremos mostrar el título de este informe en el siguiente formato en un documento de Word: fuente de 14 puntos, negrita y centrado. Primero necesitamos grabar el comando macro correspondiente en Word. Abra Word, cree un nuevo documento, escriba manualmente una línea de texto, luego seleccione Herramientas->Macro->Comando Grabar nueva macro, asigne a la nueva macro un nombre como Macro1 y realice las acciones anteriores (tamaño 14, negrita, centro -alineado), Word guarda automáticamente estas acciones como comandos Vbscript correspondientes. Luego seleccione Herramientas->Macro->Comando Macro, seleccione la macro Macro1 que acabamos de definir y podrá ver su contenido. En este ejemplo, el comando de macro que guardamos es el siguiente:
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 'Alineación central
Selection.Font.Bold = wdToggle 'Visualización en negrita
Selection.Font.Size = 14 '
Debido a que el lenguaje de secuencia de comandos del comando macro es Vbscript, podemos usar la declaración anterior en VB sin realizar ningún cambio. De esta manera, podemos escribir el siguiente código VB para lograr las funciones que requerimos. El código es el siguiente:
WdApp.Selection.Font.Bold = wdToggle 'Visualización en negrita
WdApp.Selection.Font.Size = fuente de tamaño 14 '14
WdApp.Selection.TypeText ("Título del informe") 'Título del informe
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter 'Alinear en el centro
WdApp.Selection.Font.Bold = wdToggle 'Cancelar negrita.
De manera similar, si queremos realizar otro procesamiento en el documento de Word, simplemente repita los pasos anteriores. A continuación se proporciona un ejemplo completo de mi procesamiento de documentos de Word:
Función privada SaveAsWord(ByRef MyRecord As Recordset, ByVal DocFileName As String, ByRef OutMessage As String) As Integer
'************************************************ * *************************
'
'Descripción: Guarde los datos en el conjunto de datos como un archivo DOC.
'
'parámetro:
'
'Conjunto de datos MiRegistro
'DocFileName Nombre del archivo WORD (sin ruta, consulte la variable de instancia sPath para obtener la ruta)
'Devuelve información de la operación OutMessage
'
'Retorno: 1 éxito -1 fracaso
'
'************************************************ * *************************
'Inicializar la aplicación Word
errar.Borrar
En caso de error, vaya a Err_All
Atenuar WdApp como aplicación Word
Establecer WdApp = CreateObject("Word.Application")
'Insertar datos
Dim colloop Como número de columna entero '
Dim rowloop como número de fila entero
Dim colMax As Integer 'Número de columnas
Dim rowMax As Integer 'Número de filas
Dim wdcell como ancho de entero
Dim UnitEnd As Integer 'Punto final de intersección
Dim UnitName As String 'Nombre de la unidad
Dim BbDate As String 'Período del informe
wdcelda=12
colMax = MiRegistro.Campos.count
filaMax = MyRecord.RecordCount
WdApp.Documents.Add
'Obtener la unidad de informe
UnitEnd = InStr(sBBDetail, "punto")
Nombre de la unidad = Mid(sBBDetail, 1, UnitEnd - 2)
BbDate = Mid(sBBDetail, UnitEnd, Len(sBBDetail))
Si MyRecord.Fields.count >= 10 Entonces
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientLandscape
Demás
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientPortrait
Terminar si
'Nombre del informe
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selección.Font.Tamaño = 14
WdApp.Selection.TypeText (sbbmc)
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selección.TipoPárrafo
'Nombre de la unidad de informes
WdApp.Selection.Font.color = wdColorNegro
WdApp.Selección.Font.Tamaño = 11
WdApp.Selection.TypeText (Nombre de la unidad)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selección.TipoPárrafo
'Periodo del informe
WdApp.Selection.TypeText(BbFecha)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selección.TipoPárrafo
WdApp.Selección.TipoPárrafo
'Generar encabezados de columna
'wdApp.Selection.HomeKey wdLine, wdExtend
'dApp.Selection.Font.Bold = wdToggle
WdApp.ActiveDocument.Tables.Add WdApp.Selection.Range, rowMax, colMax
Atenuar i como entero
Hacer
Para colloop = 0 Para colMax - 1
WdApp.Selección.Font.Tamaño = 9
Si i = 0 entonces
'El título de la tabla se muestra en negrita.
WdApp.Selection.Font.Bold = wdToggle
'Establece el color de fondo de la fila del título de la tabla en gris, con una escala de grises de 30
Con WdApp.Selection.Cells
Con sombreado
.Textura = wdTexturaNinguno
.ForegroundPatternColor = wdColorAutomático
.BackgroundPatternColor = wdColorGray30
Terminar con
Terminar con
Terminar si
'La última línea está alineada a la derecha y el resto están alineadas a la izquierda
Si i > 0 entonces
Si MyRecord.Fields.Item(colloop).Name = "ZBMC" o MyRecord.Fields.Item(colloop).Name = "Nombre del indicador" Entonces
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
Demás
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Terminar si
Terminar si
Si i = 0 y (MyRecord.Fields.Item(colloop).Name = "SXH" o MyRecord.Fields.Item(colloop).Name = "Número de secuencia") Entonces
WdApp.Selection.TypeText ("número de serie")
Demás
WdApp.Selection.TypeText (CStr(MyRecord.Fields.Item(colloop).valor))
Terminar si
Si (i <> filaMax - 1 O (i = filaMax - 1 y colloop < colMax - 1)) Entonces
WdApp.Selection.MoveRight (wdcell)
Terminar si
Próximo
yo = yo + 1
MiRegistro.MoverSiguiente
Bucle hasta MyRecord.EOF
WdApp.ActiveDocument.SaveAs DocFileName, 0, Falso, "", Verdadero, "", Falso, Falso, Falso, Falso, Falso
WdApp.Salir
Guardar como palabra = 1
Función de salida
Err_Todos:
Establecer WdApp = Nada
Guardar como palabra = -1
OutMessage = err.Descripción
Función de salida
Función final
Bien, hasta ahora, creo que ya sabes cómo usar macrocomandos de Word para desarrollar componentes ASP en VB. Mientras lo uses más, te familiarizarás con él rápidamente.