Necesito macro para imprimir datos específicos en una plantilla según el nombre seleccionado

Buena Tarde, Experto, necesito de de valiosa ayuda para crear una macro, tengo varios archivos con solicitudes en una carpeta y otro archivo que es la plantilla para imprimir si selección el nombre de la sede me llama unos datos específicos por ejemplo de la solicitud me trae los datos asi C6 y lo coloca en la plantilla en el B6, B6 de la solicitud al B8 plantilla, B11 hasta donde se encuentren datos , los coloca en la plantilla en el A11 para abajo, y C11 Y H11, los lleva al D11 Y E11.

Agradezco de su ayuda.

Respuesta

Tendrías que ser mas claro en lo que necesitas, por ejemplo, no tengo claro si los archivos que mencionas con las solicitudes tienen el mismo nombre de la sede o son nombres diferentes. Tampoco es claro si quieres que se imprima el documento o sólo visualizar los datos.

En caso tal el nombre de la sede sea el mismo, puedes escribir lo siguiente en el editor de visual:

Vas primero al archivo donde tienes la plantilla y das click derecho en la pestaña inferior donde está el nombre de la hoja, seleccionas la opción "Ver Código" y digitas lo siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)
'este comando se utiliza para que la pantalla no muestre nada
Application.ScreenUpdating = False
'este otro desactiva los mensajes de información y de error
Application.DisplayAlerts = False
'donde está la celda A1 colocas la celda donde vas a consultar el nombre de la sede
If Target.Address = "$A$1" Then
libro_actual = ActiveWorkbook.Name
'acá seleccionas la ruta donde están los archivos y en el ".xlsx" la extensión del otro archivo, 'modificas igual "A1" por la celda que utilizas
Workbooks.Open Filename:="C:\Escritorio\" & Range("A1") & ".xlsx"
libro_abierto = ActiveWorkbook.Name
dato1 = Range("C6")
dato2 = Range("B6")
dato3 = Range("C11")
dato4 = Range("H11")
Windows(libro_actual).Activate
Range("B6") = dato1
Range("B8") = dato2
Range("D11") = dato1
Range("E11") = dato1
Windows(libro_abierto).Activate
Windows(libro_abierto).ActiveSheet.Range("B11").Select
Windows(libro_abierto).ActiveSheet.Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows(libro_actual).Activate
Range("A11").Select
ActiveSheet.Paste
Windows(libro_abierto).Close
Else
Exit Sub
End If
End Sub

Este código funciona cada vez que cambias el valor de la celda "A1", lo que debes hacer es cambiar por la celda que estés utilizando para ingresar la sede, es preferible que utilices en esa celda una lista desplegable con la opción validación de datos con el fin de evitar errores de digitación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas