INSERTAR VARIAS IMÁGENES CON "forms.image"

21/10/2006 - 03:34 por pejelagarto | Informe spam
Kisiera por INSERTAR VARIAS IMÁGENES (10), a partir de una CELDA
($A$1); en diferentes POSICIONES DE UNA HOJA.

Kisiera poder HACER ALGO ASÍ : CÓDIGO1 para IMAGEN1, CÓDIGO 2 para
IMEGEN2,CÓDIGO3 para IMEGEN3. etc.

Los nombres de las IMÁGENES están en la COLUMNA "A" >
[a1,a2,a3,a4,a5,a6,a7,a8,a9,a10].
Los ARCHIVOS están en la RUTA "C:\excel\"; y se LLAMAN
1,2,3,4,5,6,7,8,9,10 .JPG)

MUCHÍSIMAS GRACIAS DE ANTEMANO.
pd:fELIZ AÑO

== USO EL SIGUIENTE CÓDIGO Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Address = "$A$1" Then Exit Sub
Application.ScreenUpdating = False
De_donde = "C:\EXCEL\" & [a1] & ".jpg"
With Me.Image1
If Dir(De_donde) = "" Then Me.Image1.Visible = False: Exit Sub
.Picture = LoadPicture(De_donde)
.PictureSizeMode = fmPictureSizeModeZoom
.Visible = True
End With
End Sub
==

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/10/2006 - 04:23 | Informe spam
hola, 'anonimo/a' !

1) el codigo que estas usando... 'asume' el uso de UN -solo y unico- CONTROL DE IMAGEN
cuya figura CAMBIA SEGUN EL CONTENDIO DE LA CELDA 'A1' de la hoja donde se encuentra
[por eso se utiliza el evento '_change' en el modulo de codigo de 'esa' hoja]

2) para poder tener VARIAS IMAGENES EN DIFERENTES POSICIONES EN UNA HOJA...
[necesitaras x lo -] INCRUSTA VARIOS OBJETOS ["forms.image"] EN LAS DIFERENTES POSICIONES

3) si [al fin de cuentas] los nombres de las imagenes son fijos [segun comentas: 1, 2, 3... 10]
y no van a 'cambiar' [independientemente de que los numeros esten en cada celda del rango 'A1:A10']...
podrias prescindir de las referencias al rango y usar 'directamente' los numeros/nombre de las imagenes
y utilizar una macro NO en modulos de codigo y/o eventos por cambios en las celdas... sino en un modulo 'general'

4) prueba con algo +/- como lo siguiente [suponiendo que los nombres de los controles son -tambien- consecutivos]:

Sub Cargar_n_Imagenes()
Dim n As Byte, De_donde As String
De_donde = "c:\excel\"
For n = 1 To 10
With ActiveSheet.OLEObjects("image" & n).Object
.Picture = LoadPicture(De_donde & n & ".jpg")
.PictureSizeMode = fmPictureSizeModeZoom
End With
Next
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
Kisiera por INSERTAR VARIAS IMAGENES (10), a partir de una CELDA ($A$1); en diferentes POSICIONES DE UNA HOJA.
Kisiera poder HACER ALGO ASI : CODIGO1 para IMAGEN1, CODIGO 2 para IMEGEN2,CODIGO3 para IMEGEN3. etc.
Los nombres de las IMAGENES estan en la COLUMNA "A" > [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10].
Los ARCHIVOS estan en la RUTA "C:\excel\"; y se LLAMAN 1,2,3,4,5,6,7,8,9,10 .JPG) [...]



== USO EL SIGUIENTE CODIGO Private Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Address = "$A$1" Then Exit Sub
Application.ScreenUpdating = False
De_donde = "C:\EXCEL\" & [a1] & ".jpg"
With Me.Image1
If Dir(De_donde) = "" Then Me.Image1.Visible = False: Exit Sub
.Picture = LoadPicture(De_donde)
.PictureSizeMode = fmPictureSizeModeZoom
.Visible = True
End With
End Sub
Respuesta Responder a este mensaje
#2 pejelagarto
21/10/2006 - 04:43 | Informe spam
KE TAL HECTOR, soy ANTONIO; Kreo ke no me EXPLIKÉ BIEN (No es mi
fuerte esl EXPLICARME).

Bueno, es algo así:

SUPUESTOS:
Carpeta 1: C:\Excel\Croquis\ -- Desde 1 hasta 50
Carpeta 2: C:\Excel\Credencial\ - Desde 1 hasta 50

1.- A1=Croquis1; A2=Credencial5. ((Para ke las pueda varias como
quiera, es decir, EL CROQUIS 1 NO SEA CORRESPONDIENTE A LA CREDENCIAL
5)
2.- Inserto 2 "FORM IMAGE"; uno para el CROQUIS y otro para la
CREDENCIAL
3.- Ahora si, kiero ke CAMBIEN según los NÚMERO QUE META EN LAS
CELDAS a1 y a2.


gRACIAS DE ANTEMANO. Saludos.
Respuesta Responder a este mensaje
#3 Héctor Miguel
21/10/2006 - 05:24 | Informe spam
hola, Antonio !

... es algo asi: SUPUESTOS:
Carpeta 1: C:\Excel\Croquis\ -- Desde 1 hasta 50
Carpeta 2: C:\Excel\Credencial\ - Desde 1 hasta 50
1.- A1=Croquis1; A2=Credencial5. (Para ke las pueda variar como quiera, es decir
EL CROQUIS 1 NO SEA CORRESPONDIENTE A LA CREDENCIAL 5)
2.- Inserto 2 "FORM IMAGE"; uno para el CROQUIS y otro para la CREDENCIAL
3.- Ahora si, kiero ke CAMBIEN según los NUMERO QUE META EN LAS CELDAS a1 y a2.



suponiendo que para los cambios en 'A1' esta el control 'Image1' y para 'A2' el control 'Image2' -?-
prueba/adapta/corrige/... segun corresponda el siguiente codigo...

en el modulo de codigo de 'esa' hoja ==Private Sub Worksheet_Change(ByVal Target As Range)
Dim De_donde As String, n As Byte
Select Case Target.Address
Case "$A$1"
De_donde = "c:\excel\croquis\" & [a1] & ".jpg"
n = 1
Case "$A$2"
De_donde = "c:\excel\credencial\" & [a2] & ".jpg"
n = 2
Case Else
Exit Sub
End Select
With Me.OLEObjects("image" & n).Object
If Dir(De_donde) = "" Then .Visible = False: Exit Sub
.Picture = LoadPicture(De_donde)
.PictureSizeMode = fmPictureSizeModeZoom
.Visible = True
End With
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 pejelagarto
28/10/2006 - 18:00 | Informe spam
Ke tan HECTOR...

Oye viejo, como quedaría la "ultima línea" que haga que al "salir"
del libro me dejara los "forms" en blanco para que no pesen "demasiado"
los archivos; es decir, que no se queden las "imágenes" dentro de los
archivos.

Gracais de antemano viejo.
Respuesta Responder a este mensaje
#5 Héctor Miguel
28/10/2006 - 23:10 | Informe spam
hola, Antonio !

... como quedaria la "ultima linea" que haga que al "salir" del libro me dejara los "forms" en blanco
para que no pesen "demasiado" los archivos; es decir, que no se queden las "imagenes" dentro de los archivos.



el siguiente ejemplo 'asume' que los "forms.image" [1 y 2] ya estan 'en su lugar' y...
[si no recuerdo mal] se llenan al cambio de las celdas 'A1' y 'A2' segun si se trata de 'croquis' o 'credenciales']
se quedan 'en blanco' al cerrar el libro y el mismo se guarda SIN las imagenes 'incrustadas' en los objetos ;)
podrias 'armar' algo parecido para el evento '_open' si necesitas que las imagenes se muestren desde su apertura -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

en el modulo de codigo de 'esa' hoja ==Private Sub Worksheet_Change(ByVal Target As Range)
Dim De_donde As String, n As Byte
Select Case Target.Address
Case "$A$1"
De_donde = "c:\excel\croquis\" & [a1] & ".jpg"
n = 1
Case "$A$2"
De_donde = "c:\excel\credencial\" & [a2] & ".jpg"
n = 2
Case Else
Exit Sub
End Select
With Me.OLEObjects("image" & n)
If Dir(De_donde) = "" Then .Visible = False: Exit Sub
.Object.Picture = LoadPicture(De_donde)
.Object.PictureSizeMode = fmPictureSizeModeZoom
.Visible = True
End With
End Sub

en el modulo de codigo del libro [ThisWorkbook] y asumiendo que se trata de la 'hoja1' ==Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim n As Byte
With Worksheets("hoja1")
For n = 1 To 2
.OLEObjects("image" & n).Object.Picture = LoadPicture("")
Next
End With
Me.Save
Me.Saved = True
Me.Close False
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida