Estoy trabajando en un complemento para automatizar algunos informes.
- Hay un archivo de PowerPoint de plantilla de informe que incluye enlaces a archivos de imagen de varios gráficos y tablas. (ver adjunto)
- Cuando el usuario hace clic en el botón "agregar al informe activo", el archivo de imagen apropiado se sobrescribirá para que el nuevo gráfico o tabla aparezca en el informe.
El problema que tengo es que necesito actualizar los enlaces en el documento de PowerPoint.Me gustaría poder decir "crear nuevo informe", copiar la plantilla y las imágenes predeterminadas en una nueva carpeta y actualizar los enlaces en el nuevo archivo de PowerPoint para que apunten a los archivos de imagen en la nueva carpeta en lugar de a la archivos de imagen en la carpeta de plantillas.¿Alguna idea de cómo podría hacer esto?
Muchas gracias,
John
Hola @johnmoore , enfrenté algo similar, conozco la dificultad de seguir actualizando paquetes usando plantillas corporativas en power point y necesito actualizar alrededor de 300 imágenes de Anova, tablas de variabilidad, informes de Cpk, etc. creados en JMP donde cada paquete de power point contiene "básicamente lo mismo gráficos", siempre en el mismo lugar, la única diferencia son los datos sin procesar necesarios para el informe específico.
No soy realmente un experto en VBA, pero cuando necesitas algo, sigues buscando en todos lados y haces prueba y error hasta que puedas hacer/encontrar una solución.
Este es el enfoque que sigo, tal vez tengas algo similar hasta ahora:
- En JMP envía a través de JSL tus análisis (imágenes) a una carpeta de tu PC y asigna un nombre específico a cada imagen (nunca les pongas el mismo nombre porque solo se sobrescribirá). Una vez que personalice en PowerPoint la ubicación de cada imagen específica y haga el enlace para cada una de ellas, guárdela como un archivo de macro (esta será su plantilla).
- Abra su plantilla y ejecute la macro cada vez que necesite un nuevo informe.
- Finalmente, guarde el archivo sin macro y con un nombre diferente para mantener la plantilla con imágenes lista para la próxima vez.
Espero que esto pueda ayudarte, te recomiendo que le pongas una contraseña a la macro para evitar cambios en el script.
Saludos.
Sub LinkedGraphsToPictures()
'Creado por Andrés González, marzo de 2019
'Propósito: Cambiar gráficos vinculados en imágenes regulares
Dim shp como forma
Dim sld como diapositiva
Imagen tenue como forma
Dim shp_left como doble
Dim shp_top como doble
Atenuar sld_count mientras dure
'Recorre cada diapositiva en ActivePresentation
Para cada sld en ActivePresentation.Slides
Para sld_count = ActivePresentation.Slides.Count To 1 Paso -1
' Contar hasta -1 para contar hacia atrás para evitar omitir gráficos debido a la eliminación del gráfico
Establecer sld = ActivePresentation.Slides(sld_count)
Para cada shp en sld.Shapes
Si shp.Type = msoLinkedPicture Entonces
'Recuperar posicionamiento actual
shp_izquierda = shp.Izquierda
shp_top = shp.Top
'Copiar/Pegar como imagen
shp.Copiar
sld.Shapes.PasteSpecial DataType:=ppPastePNG
Establecer pic = sld.Shapes(sld.Shapes.Count)
'Eliminar forma vinculada
shp.Eliminar
'Reposicionar imagen recién pegada
pic.Left = shp_left
pic.Top = shp_top
Terminara si
Siguiente envío
Siguiente sld_count
siguiente
Finalizar sub