Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Procedimiento muy largo para crear informe

publicado

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

Featured Replies

publicado

amigo, si tienes tus macros todas en un modulo, puedes crear una variable que contenga el objeto word y que sea comun para todos los procedimientos; es decir, al principio del modulo (al inicio de todo) coloca esto:

Private objWord

y esto que está en procedimiento_1 NO hace falta, lo puedes eliminar o comentar ya que el objeto creado al principio es comun para todos

patharch = ThisWorkbook.Path & "\INFORME.dotx"

'Set objWord = CreateObject("Word.Application")

'objWord.Visible = True

objWord.Documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0

suerte

publicado
  • Autor

Muchas gracias,

deja checo eso que me dices y te mantengo informado como me fue,

saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.