Insertar imagen en automático

Estimado fejoal, te agradecería si puedes ayudarme en la cuestión siguiente:
En uno de mis programas preciso insertar una imagen en una página en función del valor de un resultado, son tres posibles resultados y tres imágenes diferentes, por ejemplo: para el resultado "img1" debo insertar en "página3" la imagen "imagen1" y así sucesivamente.
Lo he intentado de diversas maneras pero no consigo que funcione.
Espero tu respuesta y muchas gracias
Saludos

1 respuesta

Respuesta
1
Antes que nada fejoal es mi colega que va mucho más adelante que yo, mi nombre es Cesar Mera y desde que sepa con mucho gusto te ayudaré.
Prueba con el siguiente código, obviamente lo del input box es para que funcione la macro solita pero tu puedes llamarla dándole como argumento el número o incluso el nombre de la imagen que deseas insertar.
Sub imagen()
resultado = InputBox("Digite el numero de la imagen que desea insertar", _
"Imágen")
ruta = "C:\Documents and Settings\cmera\Mis documentos\Mis imágenes\"
If resultado = 1 Then
ruta = ruta & "Bogotá.jpg"
Sheets("Hoja1").Select
ElseIf resultado = 2 Then
ruta = ruta & "Claudia Bahamon.jpg"
Sheets("Hoja2").Select
Else
ruta = ruta & "codensa.jpg"
Sheets("Hoja3").Select
End If
ActiveSheet.Pictures.Insert(ruta).Select
End Sub
Si tienes alguna pregunta adicional o no entiendes algo me avisas y con mucho gusto, que pena la demora pero tuve bastante trabajo esta semana. Si de lo contrario, la respuesta te satisface, te agradeceré una calificación acorde con la calidad de la respuesta.
En primer lugar quiero pedirte disculpas por error al asignarte un nombre que es el tuyo, ademas de agradecerte tu valiosa respuesta.
En la pregunta inicial no era demasiado explícito, cosa que quiero corregir; la situación que tengo es la siguiente:
Las imágenes, que pueden en formato word o jpeg, las tengo insertadas en una hoja excel llamada "Imagenes" y lo que necesito es insertar una de ellas en otro hoja, Hoja3, la casilla de estino es la $A$8 y la casilla con valor variable es la $B$3 de la misma Hoja3.
He hecho diferentes modificaciones del código que me enviaste pero no consigo que funciones.
Tengo otro problema en otro libro; intento que unas ojas sean visibles o no en función del valor de la celda de una hoja de inicio, después de muchas pruebas, sin éxito, he utilizado el código siguiente:
Sub abrehoja()
valor = InputBox("ThisWorkbook.Hoja4.$C$14.Value")
If valor = 1 Then
Hoja6.Visible = -1
Else
Hoja6.Visible = 0
End If
End Sub
No funciona, me da el error de compilación "no se ha definido la variable"; ¿Me podrías ayudar también con esto?.
Muchas gracias anticipadas y muchos saludos
Aquí va lo de las dos consultas.
Para lo de las imágenes debes irte a la hoja imágenes y "nombrar" cada imagen desde excel como gustes luego copias esta macro que está diseñada para que escribas el nombre de la imagen en B3 (también puedes modificarla para escribir números en vez de nombres)
sub Imagenes()
'Macro por Cesar Mera
Dim imagen As String
imagen = Worksheets("Hoja3").Range("B3").Value
ActiveSheet.Shapes(1).Select
Selection.Delete
Worksheets("Imagenes").Select
ActiveSheet.Shapes(imagen).Select
Selection.Copy
Sheets("Hoja3").Select
Range("A8").Select
ActiveSheet.Paste
End Sub
Ojo la macro borra la imagen que haya en la Hoja3 antes de traer la nueva imagen desde la hoja imágenes porque sino quedarían superpuestas.
En cuanto a la segunda consulta prueba con este código (lo hice modificando el tuyo):
Sub abrehoja()
valor = ThisWorkbook.Sheets("Hoja4").Range("C14").Value
If valor = 1 Then
Sheets("Hoja6").Visible = -1
Else
Sheets("Hoja6").Visible = 0
End If
End Sub
Espero que sea lo que necesitas, si tienes alguna pregunta adicional o no entiendes algo me avisas y con mucho gusto te ayudo, si de lo contrario, la respuesta te satisface, te agradeceré una calificación acorde con la calidad y oportunidad de la respuesta.
Estimado César, los comandos que me enviaste funcionan bien, he añadido un sub de ejecución en automático que se ejecuta al variar el valor de la casilla pero tengu un pequeño problema:
Si en valor de la celda se introduce a mano y se pulsa "Enter" todo se ejecuta perfectamente pero si el valor procede de una fórmula solo se ejecuta si abro la celda y pulso enter.
He hecho varias pruebas para que funcione como yo quiero pero no lo he conseguido. ¿Puedes seguí aydandome?
Saludos
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cadena As String
On Error Resume Next
cadena = Range("A1").Precedents.Address
esta = Application.WorksheetFunction.Find(Target.Address, cadena)
If esta Then MsgBox "aca debes llamar la otra funcion"
End Sub
Prueba este código que valida que alguna de las celdas precedentes a la celda "A1" haya variado, se debe insertar como código de la Hoja donde quieras que se realice.
Te ruego el favor de finalizar esta pregunta y si tienes alguna otra adicional por favor la haces en una nueva... ya nos salimos del tema de la primera pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas