Vb y word

Estoy haciendo un programa don pido unos datos al usuario mediante cajas de texto y quiero mandar estos datos a una plantilla word, pero no sé cómo hacerlo ni cómo mandarlos al lugar de la plantilla correcto. ¿Tendrías algún programa ejemplo?
3

3 respuestas

Respuesta
1
¿Tiene qué ser el Word, no puede ser el Excel?, Te lo pregunto porque con el word es increíblemente complicado encontrar las posiciones de los caracteres, párrafos, etc... y con el excel es bastante más fácil encontrar la posición ya que le mandas los datos a una celda
De todas maneras te mando el código de un pequeño ejemplo de como usar Word y Excel con Visual Basic, si me pasas tu dirección de correo te lo envío.
El proyecto se compone de un formulario con dos CommandButton y dos TextBox, para crear la instancia al word y al Excel puedes utilizar CreateObject("word.application") pero yo prefiero crearlos poniéndolos en las referencias así que en las referencias del proyecto deberás añadir el Microsoft Excel 8.0 Object Library (Excel8. Olb) y el Microsoft Word 8.0 Object Library (Msword8. Olb) los archivos suelen estar en el directorio del Office, el código del formulario seria el siguiente:
Option Explicit
Private Sub cmdExcel_Click()
'En este ejemplo se crea un nuevo libro y se guarda
'si lo que quieres es abrir una plantilla deberas utilizar Open en vez de Add
'y luego al guardar el libro ponerle un nombre distinto al de la plantilla
'Variables que utilizaremos
Dim AppExcel As New Excel.Application
Dim Libro As Excel.Workbook
Dim Hoja As Excel.Worksheet
'Si queremos que se vea el proceso en pantalla
AppExcel.Visible = True
'Creamos un nuevo libro
Set Libro = AppExcel.Workbooks.Add
'Establecemos la hoja que utilizaremos
Set Hoja = Libro.Worksheets(1)
'Le cambiamos el nombre
Hoja.Name = "Ejemplo desde VB"
'Ponemos en la Celda A1 el nombre del text1
Hoja.Cells(1, 1).FormulaR1C1 = Text1.Name
'Ponemos en la Celda A2 el nombre del text1
Hoja.Cells(2, 1).FormulaR1C1 = Text1.Name
'Ponemos el texto de cada control en sus celdas
Hoja.Cells(1, 2).FormulaR1C1 = Text1.Text
Hoja.Cells(2, 2).FormulaR1C1 = Text2.Text
'Guardamos el libro
Libro.SaveAs ("c:\pruebaVB.xls")
'Cerramos la aplicacion y liberamos los objetos
AppExcel.Quit
Set Hoja = Nothing
Set Libro = Nothing
Set AppExcel = Nothing
End Sub
Private Sub cmdWord_Click()
'Variables que utilizaremos
Dim AppWord As New Word.Application
Dim Documento As Word.Document
Dim Rango As Word.Range
Dim Parrafo As Paragraph
'Si queremos que se vea en la pantalla
AppWord.Visible = True
'Creamos un nuevo documento
Set Documento = AppWord.Documents.Add
'Ponemos un titulillo
Set Rango = Documento.Sections(1).Range
Rango.ParagraphFormat.Alignment = wdAlignParagraphCenter
Rango.Font.Size = 24
Rango.Font.Bold = True
Rango.Text = "Probando desde VB"
'Pones la siguiente linea
Set Parrafo = Documento.Paragraphs.Add
Set Rango = Parrafo.Range.Next
Rango.ParagraphFormat.Alignment = wdAlignParagraphLeft
Rango.Font.ColorIndex = wdRed
Rango.Font.Size = 16
Rango.Fields.Add Rango, Word.wdFieldComments, Text1.Text
Rango.InsertBefore ("El valor de Text1= ")
'Pones la siguiente linea
Set Parrafo = Documento.Paragraphs.Add
Set Rango = Parrafo.Range.Next
Rango.ParagraphFormat.Alignment = wdAlignParagraphLeft
Rango.Font.ColorIndex = wdRed
Rango.Font.Size = 16
Rango.Fields.Add Rango, Word.wdFieldComments, Text2.Text
Rango.InsertBefore ("El valor de Text2= ")
'Guardamos el documento
Documento.SaveAs "C:\prueba.doc"
'Cerramos la aplicacion
AppWord.Quit
'Descargamos los objetos
Set Documento = Nothing
Set Rango = Nothing
Set Parrafo = Nothing
Set AppWord = Nothing
End Sub
Respuesta
1
Abre el documento de word y utiliza la opción combinar correspondencia, de forma que crearas un formulario que mostrara un documento para cada registro de la base de datos. Lo único que tienes que hacer es modificar el origen de datos desde visual basic y hacer la llamada a word después.
Suerte
Respuesta

Intentaré ayudarte.

Primero crea tu documento y crea los campos a rellenar, dales a cada campo un nombre (que sea cortito)

Después creas el userform a tu gusto.

Y el código en un botón seria así:

Private Sub CommandButton1_Click()

       ' entre comillas el nombre del campo
Selection.GoTo What:=wdGoToBookmark, Name:="nuevo"

' Esta linea le dice que poner (entre comillas si es texto fijo y sin ellas si es el contenido de un textbox)
Selection.TypeText Text:="en este pondrá aquí"

Selection.GoTo What:=wdGoToBookmark, Name:="de"
Selection.TypeText Text:="Trabajadora Social"

Selection.GoTo What:=wdGoToBookmark, Name:="nombre"
Selection.TypeText Text:=" yo"

Selection.GoTo What:=wdGoToBookmark, Name:="para"
Selection.TypeText Text:=TextBox5.Text

        'esta insertaría la fecha en el campo dia

Selection.GoTo What:=wdGoToBookmark, Name:="dia"
Selection.InsertDateTime DateTimeFormat:="dd/MM/yyyy", InsertAsField:= _
False, DateLanguage:=wdSpanishModernSort, CalendarType:=wdCalendarWestern _
, InsertAsFullWidth:=False

           'esta insertaría la hora en el campo hora

Selection.GoTo What:=wdGoToBookmark, Name:="hora"
Selection.InsertDateTime DateTimeFormat:="HH:mm", InsertAsField:=False, _
DateLanguage:=wdSpanishModernSort, CalendarType:=wdCalendarWestern, _
InsertAsFullWidth:=False
                       'las siguientes lineas imprimen y guardan el nuevo documento

Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=False, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
ActiveDocument.SaveAs FileName:="C:\Users\Public\Documents\nota para " & TextBox5.Text, FileFormat:=wdFormatDocument _
, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False
Unload UserForm1
ActiveDocument. Close

Unload Me
End Sub

Después guarda el documento como archivo .dot

Y pon en el thisdocument lo siguiente para que inicie el userform

Private Sub Document_New()
UserForm1.Show
End Sub

Si me pasas tu correo te envío un ejemplo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas