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

Seleccione idioma Seleccione idioma
Id. de artículo: 250501 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describe cómo automatizar Microsoft Word 97, Microsoft Word 2000, Microsoft Word 2002 o Microsoft Office Word 2003 desde Visual FoxPro 6.0 y posterior versiones de Visual FoxPro para hacer lo siguiente:
  • Crear un nuevo documento.
  • 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 Tipo de archivo , seleccione formulario y, a continuación, haga clic en el botón Nuevo del formulario .
  3. En el cuadro de herramientas Controles de formulario , agregue un botón de comando en el nuevo formulario.
  4. Haga doble clic en el nuevo botón de comando para ir a la página de códigos 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 aparezca el cuadro de mensaje muestra " examine los resultados en Word .", activar Word para examinar los resultados. Cuando haya terminado de examinar los resultados, minimizar Word y haga clic en Aceptar en el cuadro de mensaje.

Referencias

Para obtener información adicional acerca del modelo objetos de Microsoft Office (incluyendo Microsoft Word) y cómo automatizar, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
222101Cómo encontrar y utilizar la documentación del modelo de objetos de Office
160064Cómo convertir VBA en FoxPro para la automatización OLE
181926Cómo automatizar la combinación de correspondencia en Word 97 SR-1 utilizando OLE y ODBC
172847Cómo se puede cortar y pegar desde el campo general en un documento de Word
171988Cómo pasar parámetros a una macro de Word 97
176069Cómo imprimir un intervalo de páginas en Word utilizando automatización OLE
180901Cómo crear la tabla con categorías en Word 97 con automatización OLE
240809Cómo evitar el mensaje de cambiar a o disponibilidad de aplicaciones mediante OLE
245782Buscar información en objeto de la aplicación Office 97/2000
198508Cómo insertar y dar formato a una imagen en Word 97 con automatización OLE
195404Cómo mantener el cuadro de diálogo impresión de Word mediante API encima
175173Cómo utilizar Word para imprimir los campos generales en Report Designer

Propiedades

Id. de artículo: 250501 - Última revisión: miércoles, 16 de febrero de 2005 - Versión: 4.4
La información de este artículo se refiere a:
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Office Word 2003
Palabras clave: 
kbmt kbautomation kbhowto kbsample KB250501 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 250501

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com