¿Cómo utilizar VBA para llamar imágenes y datos en EXCEL para generar imágenes y datos en PPT?
Este caso proviene de una pregunta de un internauta: es necesario exportar 2 imágenes en cada archivo desde 600 archivos Excel. Por razones de tiempo, la respuesta anterior fue relativamente simple y no proporcionó un método de implementación específico. Hoy dediqué tiempo a resolverlo. Escrito en imágenes y texto, espero que todos puedan aprenderlo.
1. Simulación de datos
Para restaurar de manera más realista los problemas encontrados por el interrogador, necesitamos preparar 600 archivos de Excel, cada uno con 2 imágenes. Podemos crear uno o dos archivos manualmente, ¡lo que equivale a 600 archivos!
No te preocupes, dado que estamos usando VBA para resolver el problema, ciertamente no es difícil resolver este tipo de problema repitiendo el trabajo mecánico. Reemplazamos las imágenes con las dos siguientes, las colocamos en el directorio de archivos actual y las nombramos test1.png y test2.png respectivamente. Al simular datos, inserte test1.png en la primera tabla y test2.png en la segunda hoja de trabajo. .
test1.png
test2.png
Proceso de operación paso a paso:
Paso 1: crear un nuevo archivo de Excel y conviértalo Guardar como formato .xlsm.
Habilitar libro de macros
Paso 2: abra el archivo .xlsm recién creado y presione la tecla de acceso directo ALT+F11 para ingresar a la interfaz VBE.
Ingrese a la interfaz VBE
Paso 3: Inserte un módulo en el proyecto VBE.
Insertar módulo
Paso 4: Pega el siguiente código en el módulo recién creado.
Sub genera 600 archivos Excel con imágenes ()
'Desactivar actualización para evitar que la pantalla tiembla
Application.ScreenUpdating = False
'Definir variable i
Atenuar i como entero
'Definir i para realizar un bucle de 1 a 600
Para i = 1 a 600
'Agregar un nuevo libro
Workbooks.Add
'Inserte la imagen test1.png en la primera hoja de trabajo del libro
ActiveWorkbook.Sheets (1) .Pictures.Insert(ThisWorkbook.Path & "\test1.png").Seleccione
'Insertar imagen test2.png en la segunda hoja de trabajo del libro
ActiveWorkbook.Sheets(2 ).Pictures.Insert(ThisWorkbook.Path & "\test2.png").Seleccione
'Guardar el libro en la ruta actual
ActiveWorkbook SaveAs ThisWorkbook.Path & "\. " & i & ".xlsx"
'Cerrar el libro
ActiveWorkbook.Close
'Continuar con el ciclo para crear otros libros
Siguiente
'Reanudar actualización de pantalla
Application.ScreenUpdating = True
'Solicitud después de completar el procesamiento
MsgBox "600 archivos de Excel ¡Se han generado imágenes que contienen!", vbInformation, "Mensaje de aviso"
End Sub
Paso 5: Ejecute el código VBA para generar los 600 archivos Excel que necesitamos.
Ejecutar código VBA
Demostración de operación continua:
Demostración de operación
2. Exportación de imágenes
600 The. El archivo del caso está listo y el siguiente paso es exportar las imágenes del archivo.
Solución:
1. Busque todos los archivos de Excel en el directorio actual uno por uno.
2. Abra el archivo Excel encontrado.
3. Busque las hojas de trabajo en el archivo Excel una por una.
4. Encuentra todos los objetos de imagen en la hoja de trabajo.
5. Exporta cada imagen encontrada al directorio actual.
Si no hay muchos archivos, también es posible exportarlos manualmente de acuerdo con la idea anterior. De hecho, para resolver el problema a través de VBA, primero debemos simplificar el problema complejo y descomponerlo paso a paso. paso y finalmente formar Solución completa. El uso del código VBA se describió en detalle en el proceso de preparación de datos anterior. Esta vez ejecutaremos el código directamente para exportar las imágenes en el archivo.
Sub exporta las imágenes en el libro bajo la ruta actual ()
Dim wk$ 'Definir como archivo de libro de trabajo
Dim i As Integer 'Definir libro de trabajo número de hojas de trabajo en
Dim ii As Integer 'Definido como el número de objetos en la hoja de trabajo
'Desactivar actualización para evitar fluctuaciones
Application.ScreenUpdating = False
'Recorrer el primer archivo del libro de trabajo
wk = Dir(ThisWorkbook.Path & "\*.xlsx")
'Recorrer los archivos cuando el nombre no es igual a vacío
Hacer mientras wk <> ""
'Si el nombre del archivo es diferente del nombre actual.
Si wk <> ThisWorkbook.Name Then
'Abra el libro de trabajo recorrido
Workbooks.Open (ThisWorkbook.Path & "\" & wk) p>
'Realice las siguientes operaciones en el archivo del libro abierto
Con ActiveWorkbook
'Recorra cada hoja de trabajo en el libro
Para i = 1 To .Sheets.Count
'Recorre cada forma de objeto en la hoja de trabajo
For ii = 1 To .Sheets(i).Shapes.Count
' Variable temporal, cuenta el número de formas
k = k + 1
'Copiar el objeto de forma
.Sheets(i) .Shapes(ii). Copiar
'Crear un objeto de gráfico con el ancho y alto consistentes con el objeto
Con .Sheets(i).ChartObjects.Add(0, 0, . Sheets(i). Formas(ii).Ancho, .Hojas(i).Formas(ii).Alto).Gráfico
'Insertar la imagen
.Pegar p>
' Exporte la imagen al directorio actual mediante el método de exportación del objeto del gráfico
.Export ThisWorkbook.Path & "\" & wk & "_" & k & ".png"
'Eliminar gráfico
.Parent.Delete
Finalizar con
Siguiente
Siguiente
'Cerrar el abrir libro de trabajo
.Close False
Finalizar con
Finalizar si
'Continuar atravesando el siguiente libro de trabajo
wk = Dir
Loop
'Activar actualización de pantalla
Application.ScreenUpdating = True
End Sub
Demostración de exportación de imágenes