Red de conocimiento informático - Material del sitio web - ¿Cómo utilizar VBA para llamar imágenes y datos en EXCEL para generar imágenes y datos en PPT?

¿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)

'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

' 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