elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Crear archivo WORD con columnas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear archivo WORD con columnas  (Leído 3,158 veces)
rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Crear archivo WORD con columnas
« en: 26 Abril 2021, 16:53 pm »

Estimados, tengo la siguiente función con la cual creo un archivo word (.doc) pero no consigo dar con el codigo para insertar una tabla.

Agradecería su ayuda.  :rolleyes:
Gracias amigos

Código
  1. Private Sub MakeWordDoc(ByVal file_name As String, ByVal title As String, ByVal body As String)
  2. On Error Resume Next
  3. Dim word_app As Word.Application
  4. Dim word_doc As Word.Document
  5.  
  6. ' Open Word and create a document.
  7. Set word_app = New Word.Application
  8. Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  
  11.    ' Write the title.
  12.  
  13.  
  14.    word_app.ActiveWindow.Selection.Font.Size = 25
  15.    word_app.ActiveWindow.Selection.Font.Name = "Arial"
  16.        word_app.Selection.TypeText title
  17.    'word_app.ActiveWindow.Selection.Font.Size = 24
  18.  
  19.  
  20.    ' Save the file.
  21.    word_doc.SaveAs FileName:=file_name
  22.  
  23.    ' Close the document and Word.
  24.    word_doc.Close True
  25.    word_app.Quit False
  26. End Sub
  27.  



En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.176



Ver Perfil
Re: Crear archivo WORD con columnas
« Respuesta #1 en: 27 Abril 2021, 18:35 pm »

Saludos,

Debes tener la referencia a mano: https://docs.microsoft.com/es-es/office/vba/api/word.table

Para tu ejemplo quedaría más o menos así:

Código
  1. Private Sub mkdoc()
  2.  Dim word_app As Word.Application
  3.  Dim word_doc As Word.Document
  4.  Dim tbl As Word.Table
  5.  Dim rng As Word.Range
  6.  
  7.  Set word_app = New Word.Application
  8.  Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  Set rng = word_doc.Range(Start:=0, End:=0)
  11.  Set tbl = word_doc.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=4)
  12.  tbl.AutoFormat Format:=wdTableFormatElegant
  13.  
  14.  word_doc.SaveAs FileName:="docu"
  15.  word_doc.Close True
  16.  word_app.Quit False
  17. End Sub


En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Crear archivo WORD con columnas
« Respuesta #2 en: 27 Abril 2021, 22:15 pm »

Saludos,

Debes tener la referencia a mano: https://docs.microsoft.com/es-es/office/vba/api/word.table

Para tu ejemplo quedaría más o menos así:

Código
  1. Private Sub mkdoc()
  2.  Dim word_app As Word.Application
  3.  Dim word_doc As Word.Document
  4.  Dim tbl As Word.Table
  5.  Dim rng As Word.Range
  6.  
  7.  Set word_app = New Word.Application
  8.  Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  Set rng = word_doc.Range(Start:=0, End:=0)
  11.  Set tbl = word_doc.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=4)
  12.  tbl.AutoFormat Format:=wdTableFormatElegant
  13.  
  14.  word_doc.SaveAs FileName:="docu"
  15.  word_doc.Close True
  16.  word_app.Quit False
  17. End Sub

Muchas gracias estimado, funcionó de maravilla.
En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Crear archivo WORD con columnas
« Respuesta #3 en: 2 Mayo 2021, 03:17 am »

Saludos,

Debes tener la referencia a mano: https://docs.microsoft.com/es-es/office/vba/api/word.table

Para tu ejemplo quedaría más o menos así:

Código
  1. Private Sub mkdoc()
  2.  Dim word_app As Word.Application
  3.  Dim word_doc As Word.Document
  4.  Dim tbl As Word.Table
  5.  Dim rng As Word.Range
  6.  
  7.  Set word_app = New Word.Application
  8.  Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  Set rng = word_doc.Range(Start:=0, End:=0)
  11.  Set tbl = word_doc.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=4)
  12.  tbl.AutoFormat Format:=wdTableFormatElegant
  13.  
  14.  word_doc.SaveAs FileName:="docu"
  15.  word_doc.Close True
  16.  word_app.Quit False
  17. End Sub

Estimado, como puedo hacer para crear la tabla como continuación de otro elemento. al establecer el rango (.Range(Start:=0, End:=0)) la tabla se crea al principio del documento. mi idea es que la tabla salga después de un título por ejemplo, pero no a través de un rango especifico, por que el texto previo va variando y por ende el rango irá cambiando también, espero me haya dado a entender.

Gracias por tu ayuda.
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.176



Ver Perfil
Re: Crear archivo WORD con columnas
« Respuesta #4 en: 2 Mayo 2021, 05:04 am »

Siempre puedes referirte a objetos del documento como palabras o párrafos para obtener un Rango adecuado, por ejemplo tomemos como primer párrafo a tu Título, entonces obtenemos un Rango que sea el último elemento de dicho párrafo (el salto de línea) e insertamos ahí la tabla:

Código
  1. Private Sub mkdoc()
  2.  Dim word_app As Word.Application
  3.  Dim word_doc As Word.Document
  4.  Dim tbl As Word.Table
  5.  Dim rng As Word.Range
  6.  
  7.  Set word_app = New Word.Application
  8.  Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  ' Inserta un título al final del documento (al inicio porque está vacío)
  11.  word_doc.Content.InsertAfter "Mi Título"
  12.  
  13.  ' Inserta una tabla despues del primer párrafo (despues del título)
  14.  Set rng = word_doc.Range(word_doc.Paragraphs(1).Range.End - 1, word_doc.Paragraphs(1).Range.End)
  15.  Set tbl = word_doc.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=4)
  16.  tbl.AutoFormat Format:=wdTableFormatElegant
  17.  
  18.  word_doc.SaveAs FileName:="docu"
  19.  word_doc.Close True
  20.  word_app.Quit False
  21. End Sub
En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Crear archivo WORD con columnas
« Respuesta #5 en: 2 Mayo 2021, 09:31 am »

Siempre puedes referirte a objetos del documento como palabras o párrafos para obtener un Rango adecuado, por ejemplo tomemos como primer párrafo a tu Título, entonces obtenemos un Rango que sea el último elemento de dicho párrafo (el salto de línea) e insertamos ahí la tabla:

Código
  1. Private Sub mkdoc()
  2.  Dim word_app As Word.Application
  3.  Dim word_doc As Word.Document
  4.  Dim tbl As Word.Table
  5.  Dim rng As Word.Range
  6.  
  7.  Set word_app = New Word.Application
  8.  Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  ' Inserta un título al final del documento (al inicio porque está vacío)
  11.  word_doc.Content.InsertAfter "Mi Título"
  12.  
  13.  ' Inserta una tabla despues del primer párrafo (despues del título)
  14.  Set rng = word_doc.Range(word_doc.Paragraphs(1).Range.End - 1, word_doc.Paragraphs(1).Range.End)
  15.  Set tbl = word_doc.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=4)
  16.  tbl.AutoFormat Format:=wdTableFormatElegant
  17.  
  18.  word_doc.SaveAs FileName:="docu"
  19.  word_doc.Close True
  20.  word_app.Quit False
  21. End Sub

Entiendo, el problema es que el contenido del word va variando y los párrafos van cambiando, hay alguna manera de que por ejemplo el rango se defina a través de una palabra? por ejemplo, que inserte la tabla después de la palabra "casa".

Gracias por la ayuda amigo
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.176



Ver Perfil
Re: Crear archivo WORD con columnas
« Respuesta #6 en: 2 Mayo 2021, 17:44 pm »

Es ese caso puedes buscar (.Find) en el documento la palabra que quieras, obtener a partir de esa palabra un nuevo Rango e insertar ahí tu tabla:

Código
  1. Private Sub mkdoc2()
  2.  Dim word_app As Word.Application
  3.  Dim word_doc As Word.Document
  4.  Dim tbl As Word.Table
  5.  Dim rng As Word.Range
  6.  
  7.  Set word_app = New Word.Application
  8.  Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  ' Inserta un título al final del documento (al inicio porque está vacío)
  11.  word_doc.Content.InsertAfter "Son escasas las casas, pero mi casa es mi casa"
  12.  
  13.  ' Inserta una tabla despues de la primera palabra "casa"
  14.  Set rng = word_doc.Content
  15.  rng.Find.Execute FindText:="casa", MatchWholeWord:=True
  16.  
  17.  If rng.Find.Found = True Then
  18.    Set rng = word_doc.Range(Start:=rng.End, End:=rng.End)
  19.    Set tbl = word_doc.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=4)
  20.    tbl.AutoFormat Format:=wdTableFormatElegant
  21.  End If
  22.  
  23.  word_doc.SaveAs FileName:="docu"
  24.  word_doc.Close True
  25.  word_app.Quit False
  26. End Sub
  27.  
En línea

rapbyone

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Crear archivo WORD con columnas
« Respuesta #7 en: 2 Mayo 2021, 19:33 pm »

Es ese caso puedes buscar (.Find) en el documento la palabra que quieras, obtener a partir de esa palabra un nuevo Rango e insertar ahí tu tabla:

Código
  1. Private Sub mkdoc2()
  2.  Dim word_app As Word.Application
  3.  Dim word_doc As Word.Document
  4.  Dim tbl As Word.Table
  5.  Dim rng As Word.Range
  6.  
  7.  Set word_app = New Word.Application
  8.  Set word_doc = word_app.Documents.Add(DocumentType:=wdNewBlankDocument)
  9.  
  10.  ' Inserta un título al final del documento (al inicio porque está vacío)
  11.  word_doc.Content.InsertAfter "Son escasas las casas, pero mi casa es mi casa"
  12.  
  13.  ' Inserta una tabla despues de la primera palabra "casa"
  14.  Set rng = word_doc.Content
  15.  rng.Find.Execute FindText:="casa", MatchWholeWord:=True
  16.  
  17.  If rng.Find.Found = True Then
  18.    Set rng = word_doc.Range(Start:=rng.End, End:=rng.End)
  19.    Set tbl = word_doc.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=4)
  20.    tbl.AutoFormat Format:=wdTableFormatElegant
  21.  End If
  22.  
  23.  word_doc.SaveAs FileName:="docu"
  24.  word_doc.Close True
  25.  word_app.Quit False
  26. End Sub
  27.  

Estimado, agradezco la ayuda, funcionó perfecto, muchas gracias amigo  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Leer un archivo word con php
PHP
memosky 3 9,362 Último mensaje 3 Abril 2009, 04:25 am
por memosky
Agregar columnas a archivo CVS
Scripting
abnervg413eh 1 3,883 Último mensaje 9 Diciembre 2011, 23:01 pm
por abnervg413eh
Como crear columnas en tiempo de ejecucion
.NET (C#, VB.NET, ASP)
USLO 3 3,647 Último mensaje 7 Noviembre 2012, 21:22 pm
por spiritdead
contraseña en archivo de word
Programación C/C++
tutospaindani 0 1,552 Último mensaje 15 Noviembre 2013, 17:23 pm
por tutospaindani
Independizar tamaño de columnas en tablas de Word 2013.
Software
Tachikomaia 3 8,682 Último mensaje 28 Febrero 2024, 10:01 am
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines