Macro para guardar imagen en excel

Tengo un formulario que captura cierta información en una hoja de excel, adicional a esto también se puede pegar una imagen desde el explorador de windows. Pero aquí es donde tengo mi problema ya que lo que hago es ocultar el libro y solo mostrar el formulario. Pero al hacer esto me manda un error cuando quiero pegar la imagen en la hoja. ¿Me podrian ayudar para ver que estoy haciendo mal y pueda corregir este problema?

La macro que utilizo para pegar la imagen en la hoja de excel es la siguiente:

Private Sub CommandButton5_Click()
fichero = Application.GetOpenFilename
If fichero = False Then Exit Sub
tope = Range("A5").Top
izq = Range("A5").Left
alto = Range("A5").Height
ancho = Range("A5").Width
Workbooks("Tickets2").Activate
ThisWorkbook.Sheets("Hoja3").Pictures.Insert(fichero).Select
w = Selection.Width
h = Selection.Height
MsgBox "La imagen se guardo correctamente"
End Sub

Nota: cabe mencionar que si hay otros libros abiertos si funciona bien todo, pero si solo se abre el libro del formulario manda este error.

Se ha producido el error "1004" en tiempo de ejecución

Error en el método 'Range' de objeto '_Global'

Respuesta
1

Prueba cambiando esta línea de lugar

Workbooks("Tickets2"). Activate

y ponerla aquí

If fichero = False Then Exit Sub
Workbooks("Tickets2"). Activate

Lo intente de esa manera y tampoco resuelve el problema, sigue saliendo el mismo error

Parece que tienes oculta la Hoja3 del libro, ¿puede ser?

Si es correcto estoy ocultando todo el libro para que solo se muestre el formulario. 

Y si haces application.visibe = true pegas la imagen y applicatin.visible = false?

me podrías explicar como hacerlo, como modifico el código que ya tengo

Private Sub CommandButton5_Click()
fichero = Application.GetOpenFilename
If fichero = False Then Exit Sub
tope = Range("A5").Top
izq = Range("A5").Left
alto = Range("A5").Height
ancho = Range("A5").Width
Workbooks("Tickets2").Activate
ThisWorkbook.Sheets("Hoja3").Pictures.Insert(fichero).Select
w = Selection.Width
h = Selection.Height
MsgBox "La imagen se guardo correctamente"
End Sub

Private Sub CommandButton5_Click()
fichero = Application.GetOpenFilename
If fichero = False Then Exit Sub

Application.visible = True
tope = Range("A5").Top
izq = Range("A5").Left
alto = Range("A5").Height
ancho = Range("A5").Width
Workbooks("Tickets2").Activate
ThisWorkbook.Sheets("Hoja3").Pictures.Insert(fichero).Select
w = Selection.Width
h = Selection.Height

Application.visible = False

MsgBox "La imagen se guardo correctamente"
End Sub

1 respuesta más de otro experto

Respuesta
1

Plantilla estupenda en libro de excel que nos puede servir de ayuda para crear de una forma sencilla bases de datos con diferentes tipos de datos en la que podemos incluir imágenes de distinto tipo, hay que poner los nombres de los campos con los datos e imágenes deseadas. Hasta 78 campos podemos introducir incluyendo el campo de la referencia e imagen (campso hasta la columna BZ, aunque se pude ampliar).

En la hoja con el nombre Base de datos en la columna A no debemos introducir duplicados y en la columna B corresponde a las celdas para las imágenes.

El administrador contiene nombres con fórmulas que devuelve el dato correspondiente a la fila y columna que deseemos.

Ejemplo: Tenemos una Base de datos diferentes registros (en la columna C celda C1), tenemos el campo Nombre y deseamos que nos devuelva en una celda vacía el contenido que hay en dicha columna y la fila que corresponde a la referencia del dato que se encuentra en la celda F2 de la hoja ficha, en una celda vacía de la hoja Ficha u otra hoja escribimos el siguiente nombre:
=Columna_C (este nombre contiene la fórmula)
Si deseamos que nos devuelva el dato de la columna D escribiemos = Columna_D y así hasta la columna BZ,

Otro ejemplo, estamos en la hoja Ficha y en la celda F2 se encuentra el siguiente número 2018, si escribimos en una celda vacía =Columna_F (buscaría en en la columna A de la hoja Base de datos 2018 y devolvería el contenido de la columna F que corresponde con la fila donde se encuentra el mismo dato en este caso 2018.

Si escribimos en una celda vacía =Columna_M lo mismo que lo anterior delvoría en este caso el dato correspondiente a la columna M y así para para que devuelva el dato de la columna que deseemos y así hasta la columna BZ.

Por lo tanto, sólo tiene que escribir en la hoja ficha =Columna_ (y la columna donde se encuentra el dato que deseemos que nos devuelva)

No borre en la hoja ficha la celda donde se encuentra la imagen ni la referencia.

DESCARGAR EJEMPLO:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas