Tengo una macro que me manda información de Excel a Word
y a partir de esta información estoy generando un reporte. El reporte fue generado a través de una plantilla de word *.dotx. y esta es abierta con la macro para que se añada la información. Debido a que tengo un procedimiento muy largo lo dividí en varios procedimientos, esto funcionó perfectamente el problema es que cuando comienza el siguiente procedimiento no me toma el documento activo para que siga generando el reporte.
Hola!!
Soy nuevo aquí con ustedes
esperemos y alguien pueda ayudarme!!
Tengo una macro que me manda información de Excel a Word
y a partir de esta información estoy generando un reporte. El reporte fue generado a través de una plantilla de word *.dotx. y esta es abierta con la macro para que se añada la información. Debido a que tengo un procedimiento muy largo lo dividí en varios procedimientos, esto funcionó perfectamente el problema es que cuando comienza el siguiente procedimiento no me toma el documento activo para que siga generando el reporte.
En seguida colocó un ejemplo del código:
Private Sub Inicio_Click()
Dim datos(0 To 1, 0 To n) As String
patharch = ThisWorkbook.Path & "\INFORME.dotx"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.Documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0
datos(0, 0) = "[re_RESPONSABLE_DEL_MUESTREO]"
datos(1, 0) = Hoja1.Cells(3, 1) '(fila,columna)
datos(0, 1) = "[re_ASISTENTE]"
datos(1, 1) = Hoja1.Cells(4, 1)
datos(0, 2) = "[re_FECHA]"
datos(1, 2) = Hoja1.Cells(5, 1)
datos(0, 3) = "[re_EMPRESA]"
datos(1, 3) = Hoja1.Cells(6, 1)
datos(0, 4) = "[re_DIRECCION]"
datos(1, 4) = Hoja1.Cells(7, 1)
datos(0, 5) = "[re_IDENTIFICACION]"
datos(1, 5) = Hoja1.Cells(8, 1)
----------------------------------------------------------------------------
For i = 0 To UBound(datos, 2)
textobuscar = datos(0, i)
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
While objWord.Selection.Find.Found = True
objWord.Selection.Text = datos(1, i) 'texto a reemplazar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
Next i
Call procedimiento_1
End Sub
Aquí
no me toma el Informe que se inicio anteriormente si no que me abre uno nuevo y lo sigue imprimiendo.
Private Sub procedimiento_1()
Dim datos(0 To 1, n To m) As String '(columna,fila)
patharch = ThisWorkbook.Path & "\INFORME.dotx"
'Set objWord = CreateObject("Word.Application")
'objWord.Visible = True
objWord.Documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0
Ojala y alguien me pueda decir que instrucciones debo de agregarle para que continué en el mismo documento que se inicio anteriormente.
datos(0, 446) = "[re_1hh1]"
datos(1, 446) = Hoja1.Cells(697, 1).Text
datos(0, 447) = "[re_1hh2]"
datos(1, 447) = Hoja1.Cells(698, 1).Text
datos(0, 448) = "[re_1hh3]"
datos(1, 448) = Hoja1.Cells(699, 1).Text
datos(0, 449) = "[re_1hh4]"
datos(1, 449) = Hoja1.Cells(700, 1).Text
For i = n To UBound(datos, 2)
textobuscar = datos(0, i)
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
While objWord.Selection.Find.Found = True
objWord.Selection.Text = datos(1, i) 'texto a reemplazar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
Next i
Call procedimiento_2
End Sub
y así sucesivamente....
Muchas gracias,
Saludos