Cómo automatizar Word desde Visual FoxPro y agregar una tabla a un documento

Resumen

Este artículo se describe cómo automatizar Microsoft Word 97, Microsoft Word 2000, Microsoft Word 2002 o Microsoft Office Word 2003 de Microsoft Visual FoxPro 6.0 y versiones posteriores de Visual FoxPro para realizar lo siguiente:
  • Crear un documento nuevo.
  • Agregar texto y una tabla al documento.
  • Dar formato al texto.
  • Dar formato a la tabla.
  • Rellenar la tabla con datos.

Más información

Pasos para crear un proyecto de ejemplo

  1. Inicie Visual FoxPro.
  2. En el menú archivo , haga clic en nuevo. En la lista de opciones de Tipo de archivo , seleccione formularioy haga clic en el botón Nuevo formulario .
  3. Desde el cuadro de herramientas Controles de formulario , agregue un botón de comando en el nuevo formulario.
  4. Haga doble clic en el botón de comando nuevo para ir a la página de código para el botón de comando, haga clic en evento.
  5. Agregue el código siguiente al procedimiento Click del botón de comando :
    #DEFINE wdToggle 9999998#DEFINE wdTableRight -999996
    #DEFINE wdAlignParagraphLeft 0
    #DEFINE wdAlignParagraphCenter 1
    #DEFINE wdAlignParagraphJustify 3
    #DEFINE wdHorizontalPositionMargin 0
    #DEFINE wdCollapseEnd 0
    #DEFINE wdCollapseStart 1
    #DEFINE wdParagraph 4

    oWord = CREATEOBJECT("Word.Application")
    oWord.Visible = .F. && Toggle this to True to see if there's
    && any difference
    oDoc = oWord.Documents.Add()
    oRange = oDoc.Range()
    oRange.Collapse(wdCollapseStart)
    WITH oRange
    .ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Font.Size = 14
    .Font.Name = "Arial Black"
    .InsertAfter("Heading for Sales Report")
    .MoveEnd(wdParagraph,1)

    .Bold = .T.
    .Collapse(wdCollapseEnd)
    .InsertParagraphAfter()
    .MoveEnd(wdParagraph,1)
    .Bold = .F.
    .Collapse(wdCollapseEnd)

    .ParagraphFormat.Alignment = wdAlignParagraphLeft
    .Font.Size = 12
    .Font.Name = "Times New Roman"
    .InsertParagraphAfter()
    .InsertParagraphAfter()
    .ParagraphFormat.Alignment = wdAlignParagraphLeft
    .InsertAfter(REPLICATE("Paragraph #1 is left aligned. "+;
    "Paragraph 2 is justified. ",4))
    .Collapse(wdCollapseEnd)
    .InsertParagraphAfter()
    .InsertParagraphAfter()
    .Collapse(wdCollapseEnd)
    .ParagraphFormat.Alignment = wdAlignParagraphJustify
    .InsertAfter(REPLICATE("This is a long paragraph that "+;
    "needs to wrap around a table that will fit in the "+;
    "paragraph, aligned at the right margin. ", 3))
    .Collapse(wdCollapseEnd)
    ENDwith

    *!* Need a table of 4 rows, 3 columns, plus cells for labels and headings.
    oWord.ActiveDocument.Tables.Add(oRange, 5, 4, 1, 0) && Word 2000 syntax
    *!* Arguments are Range, #rows, #cols, [DefaultTableBehavior,] [AutoFitBehavior])
    *!* Word 97 syntax is oWord.ActiveDocument.Tables.Add(oRange, 5, 4)
    oTable = oWord.ActiveDocument.Tables(1) && Assign a table object
    WITH oTable
    .Columns.SetWidth(72,0) && 72 points/inch
    .Rows.WrapAroundText = .T.
    .Rows.RelativeHorizontalPosition = 0 && wdHorizontalPositionMargin
    .Rows.HorizontalPosition = -999996 && wdTableRight
    .Autoformat(2,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.)
    *!* (Format,ApplyBorders,ApplyShading,ApplyFont,ApplyColor,ApplyHeadingRows,
    *!* ApplyLastRow,ApplyFirstColumn,ApplyLastColumn,AutoFit)
    .Cell(2,1).Range.InsertAfter("Qtr 1")
    .Cell(3,1).Range.InsertAfter("Qtr 2")
    .Cell(4,1).Range.InsertAfter("Qtr 3")
    .Cell(1,2).Range.InsertAfter("Eastern")
    .Cell(1,3).Range.InsertAfter("Central")
    .Cell(1,4).Range.InsertAfter("Western")
    .Cell(2,2).Range.InsertAfter("4.5")
    .Cell(2,3).Range.InsertAfter("3.7")
    .Cell(2,4).Range.InsertAfter("4.2")


    .Cell(3,2).Range.InsertAfter("4.7")
    .Cell(3,3).Range.InsertAfter("4.1")
    .Cell(3,4).Range.InsertAfter("4.3")

    .Cell(4,2).Range.InsertAfter("4.9")
    .Cell(4,3).Range.InsertAfter("4.0")
    .Cell(4,4).Range.InsertAfter("4.5")

    .Rows(5).Cells.Merge
    .Cell(5,1).Range.InsertAfter("Quarterly Cookie "+;
    "Sales by Region - in $ Millions")
    .Cell(5,1).Range.MoveEnd(wdParagraph,1)
    .Cell(5,1).Range.Bold = .T.
    .Cell(5,1).FitText = .T.

    .Rows(1).Shading.Texture = 200
    ENDwith
    oRange = oTable.Range
    oRange.Collapse(wdCollapseEnd) && Move insertion point beyond table
    WITH oRange
    .InsertAfter("The table goes before this sentence. ")
    .InsertAfter(REPLICATE("This is a long paragraph that "+;
    "needs to wrap around a table that will fit in the "+;
    "paragraph, aligned at the right margin. ",5))
    .InsertParagraphAfter()
    .InsertParagraphAfter()
    .InsertAfter("A New Paragraph")
    ENDwith

    oWord.Visible = .T. && Inspect the results
    MESSAGEBOX("Look at results in Word.")


    oWord.Quit(.F.) && Don't save changes
    ThisForm.Release

  6. Ejecute el programa y, a continuación, haga clic en el botón de comando .

    Cuando aparece el cuadro de mensaje que muestra "mirar los resultados en Word." Activar Word para examinar los resultados. Cuando haya terminado de examinar los resultados, minimice Word y haga clic en Aceptar en el cuadro de mensaje.

Referencias

Para obtener información adicional acerca del modelo de objetos de Microsoft Office (incluido Microsoft Word) y cómo automatizar, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

222101 cómo encontrar y usar la documentación del modelo de objetos de Office

160064 cómo convertir VBA en FoxPro para la automatización OLE

181926 cómo automatizar la combinación de correspondencia en Word 97 SR-1 utilizando OLE y ODBC

172847 cómo cortar y pegar del campo general en un documento de Word

171988 cómo pasar parámetros a una macro de Word 97

176069 cómo imprimir un intervalo de páginas en Word utilizando Automatización OLE

180901 cómo crear tabla con categorías en Word 97 con automatización OLE

240809 cómo evitar cambiar a o aplicación ocupado mensaje utilizando OLE

245782 para obtener información sobre el objeto de la aplicación de Office 97/2000

198508 cómo insertar y dar formato a una imagen en Word 97 con automatización OLE

195404 cómo mantener el cuadro de diálogo de impresión de Word en la parte superior con las API

175173 cómo utilizar Word para imprimir los campos generales en el Diseñador de informes

Propiedades

Id. de artículo: 250501 - Última revisión: 23 ene. 2017 - Revisión: 1

Comentarios