Pido de nuevo ayuda en macro autofilter

18/07/2004 - 17:52 por José Frasquet | Informe spam
Necesito ayuda por favor, aunque sea parcialmente. Gracias

En un libro tengo las siguientes hojas entre otras:

1) "Base de datos" (con 43 columnas) Se trata de pisos para vender.
2) "Impresión de listados" (con la función BuscarV) y tres cuadros de lista
para elegir campos de las 43 columnas de la "Base de datos" antes
mencionada.
3) "Plantilla" (extrae datos con BuscarV de la "Base de datos")<> (por
cada referencia un DIN A4, con foto)
Bien, ahora voy a plantear lo que necesito y agradezco a cualquier maestro
del foro que me pueda ayudar.
1) En esta hoja necesitaría tene en una columna nueva, p.e. "foto", una
forma de llamar a la foto correspondiente a cada referencia de piso, ó si es
posible, ¿la propia foto?.
2) En esta hoja me gustaria tener un boton al que asignaria la macro que
basada en el autofiltro de la hoja "Base de datos", y en razón de los
criterios de filtrado que he elegido en los cuadros de lista, me
proporcione, copiando la columna en cuyo rango están las referencias de los
pisos y pegando ese rango en esta hoja, el listado que se pretende,
teneiendo en cuenta que al pegar el rango actuaria la función BuscarV antes
de imprimir finalmente la hoja.
3) Por último, en la hoja "Plantilla", tengo el rango H17:L34 destinado a
pegar la foto que corresponda a la referencia del piso solicitado. Agradezco
al maestro Héctor Miguel la ayuda que me proporcionó en su día (10-06-04) y
de hecho la estoy aprovechando actualmente, pero como no le dí la suficiente
explicación de lo que quería hacer, no me funciona demasiado práctica
aquella solución. Estoy usando ahora esta macro:
Sub Macrofotos2()
'
' Macrofotos2 Macro
' Macro grabada el 19/06/2004 por José R.
'
Range("H17").Select
ActiveSheet.Pictures.Insert( _
"C:\Documents and Settings\Isabel\Escritorio\Pepe Frasquet\Fichas de
pisos\5002.JPG" _
).Select
'Me gustaría cambiar a una carpeta en Mis documentos que se llame "Fotos
de pisos" y se llamarían por la referencia, p.ej. 5002.JPG
Range("a3").Select
End Sub

Bueno es todo. (ya es bastante...) Agradezco infinitamente la ayuda.
Gracias. Saludos
Pepe Frasquet

Preguntas similare

Leer las respuestas

#1 Sergio A Campos H
19/07/2004 - 02:25 | Informe spam
CUALQUIER DUDA VUELVES A EXPONER

Insertar una imágen en la hoja de cálculo. Al




seleccionar la celda debe de ser exactamente el nombre del
archivo sin extensión (debe de ser .jpg la imágen),
presionamos Ctrl + M y se insertará en la hoja actual la
imágen simpre y cuando sea el nombre correcto.

Que tal.

Nota: La macro se va a ejecutar con la combinación Ctrl+M,
puedes ejecutarla antes de modificarla para que veas si
ese es un buen lugar para mostrar la imágen.

*************ESTO ES SOLO SI QUIERES QUE LA FOTO APAREZCA
EN OTRA PARTE DE LA HOJA Y CON OTRO TAMAÑO (OPCIONAL).
Solo dos indicaciones que debes de hacer cuando quieras
ejecutar la macro, esto es según tu preferencia, lo debes
de modificar en
Menú>>Herramientas>>Macro>>Macros>>ViewImage>>modificar.





En la línea siguiente vas a cambiarle el valor a la
columna, dependiendo en donde quieras que se alinee la
imágen.
Selection.ShapeRange.Left = .Columns("B").Left

En la línea siguientes vas a cambiarle el valor a la Fila
(Rows), dependiendo en donde quieras que se alinee la
imágen.
Selection.ShapeRange.Top = .Rows("2").Top

En la línea siguiente vas a cambiarle el valor al zoom
(0.4 o menos, ejemplo: 0.3), dependiendo que tan reducido
quieras la imágen.
Selection.ShapeRange.ScaleWidth 0.4, msoFalse,
msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.4, msoFalse,
msoScaleFromTopLeft

EL CÓDIGO PARA LA MACRO >>>>>>>>>>>>>>>































Sub ViewImage()
'
' Macro1 Macro
' Macro grabada el 27/05/2003 por Sergio Alejandro Campos
Hdez
'
'Primeramente se definen las variables como "variantes"
Dim FromCell As Variant
Dim NoExistImage As Variant
Dim User As Variant
Dim DirectImage As Variant
User = Application.UserName
On Error GoTo NoExistImage
'En esta instrucción verifica si hay objetos de imágen y
'los borra para que aparezca el siguiente
ActiveSheet.DrawingObjects.Delete
With ThisWorkbook.Sheets("Hoja1")
FromCell = ActiveCell
'Con las variables antes dadas de alta, se abrirá la
imágen con en nombre que
'tiene la celda activa
DirectImage = "C:\Documents and
Settings\Isabel\Escritorio\Pepe Frasquet\Fichas de pisos\"
.Pictures.Insert (DirectImage) & FromCell & (".jpg")
'Selecciona la imágen y la ubica en la posición que a
continuación se muestra
.DrawingObjects.Select
Selection.ShapeRange.Left = .Columns("B").Left
Selection.ShapeRange.Top = .Rows("2").Top
Selection.ShapeRange.ScaleWidth 0.4, msoFalse,
msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.4, msoFalse,
msoScaleFromTopLeft
End With
Exit Sub
'Si la celda no contiene un nombre correcto aparecerá el
error
NoExistImage:
MsgBox "Está intentando mostrar una imágen que no existe
en la ruta especificada:" _
& vbCrLf & DirectImage & vbCrLf & vbCrLf & "Error " & CStr
(Err.Number) & " " & _
CStr(Err.Description), vbCritical, User
End Sub
Respuesta Responder a este mensaje
#2 José Frasquet
19/07/2004 - 11:11 | Informe spam
Hola Sergio, te agradezco la ayuda, en cuanto pueda te comunico el
resultado. Solo una cosa:
Tengo la base de datos en una hoja llamada "Base de datos" (alli escribiré
los nombres de las fotos sin la extensión JPG en la columna "Foto") y en
otra hoja la plantilla, llamada "Plantilla", que es donde extraigo los datos
de la base incluída la foto en el Range H17:L34 .
¿como cambian las cosas?. Saludos y gracias.
Pepe Frasquet

"Sergio A Campos H" escribió en el mensaje
news:2e72d01c46d26$d4f38350$
CUALQUIER DUDA VUELVES A EXPONER

Insertar una imágen en la hoja de cálculo. Al




seleccionar la celda debe de ser exactamente el nombre del
archivo sin extensión (debe de ser .jpg la imágen),
presionamos Ctrl + M y se insertará en la hoja actual la
imágen simpre y cuando sea el nombre correcto.

Que tal.

Nota: La macro se va a ejecutar con la combinación Ctrl+M,
puedes ejecutarla antes de modificarla para que veas si
ese es un buen lugar para mostrar la imágen.

*************ESTO ES SOLO SI QUIERES QUE LA FOTO APAREZCA
EN OTRA PARTE DE LA HOJA Y CON OTRO TAMAÑO (OPCIONAL).
Solo dos indicaciones que debes de hacer cuando quieras
ejecutar la macro, esto es según tu preferencia, lo debes
de modificar en
Menú>>Herramientas>>Macro>>Macros>>ViewImage>>modificar.





En la línea siguiente vas a cambiarle el valor a la
columna, dependiendo en donde quieras que se alinee la
imágen.
Selection.ShapeRange.Left = .Columns("B").Left

En la línea siguientes vas a cambiarle el valor a la Fila
(Rows), dependiendo en donde quieras que se alinee la
imágen.
Selection.ShapeRange.Top = .Rows("2").Top

En la línea siguiente vas a cambiarle el valor al zoom
(0.4 o menos, ejemplo: 0.3), dependiendo que tan reducido
quieras la imágen.
Selection.ShapeRange.ScaleWidth 0.4, msoFalse,
msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.4, msoFalse,
msoScaleFromTopLeft

EL CÓDIGO PARA LA MACRO >>>>>>>>>>>>>>>































Sub ViewImage()
'
' Macro1 Macro
' Macro grabada el 27/05/2003 por Sergio Alejandro Campos
Hdez
'
'Primeramente se definen las variables como "variantes"
Dim FromCell As Variant
Dim NoExistImage As Variant
Dim User As Variant
Dim DirectImage As Variant
User = Application.UserName
On Error GoTo NoExistImage
'En esta instrucción verifica si hay objetos de imágen y
'los borra para que aparezca el siguiente
ActiveSheet.DrawingObjects.Delete
With ThisWorkbook.Sheets("Hoja1")
FromCell = ActiveCell
'Con las variables antes dadas de alta, se abrirá la
imágen con en nombre que
'tiene la celda activa
DirectImage = "C:\Documents and
Settings\Isabel\Escritorio\Pepe Frasquet\Fichas de pisos\"
.Pictures.Insert (DirectImage) & FromCell & (".jpg")
'Selecciona la imágen y la ubica en la posición que a
continuación se muestra
.DrawingObjects.Select
Selection.ShapeRange.Left = .Columns("B").Left
Selection.ShapeRange.Top = .Rows("2").Top
Selection.ShapeRange.ScaleWidth 0.4, msoFalse,
msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.4, msoFalse,
msoScaleFromTopLeft
End With
Exit Sub
'Si la celda no contiene un nombre correcto aparecerá el
error
NoExistImage:
MsgBox "Está intentando mostrar una imágen que no existe
en la ruta especificada:" _
& vbCrLf & DirectImage & vbCrLf & vbCrLf & "Error " & CStr
(Err.Number) & " " & _
CStr(Err.Description), vbCritical, User
End Sub
Respuesta Responder a este mensaje
#3 Sergio A Campos H
20/07/2004 - 06:07 | Informe spam
Que tal.

En este caso no hay de qué preocuparse por donde está o
como se llama la hoja de los datos. Tu haces las fórmulas
(supongo BUSCARV) en la hoja "Plantilla" para extraer el
nombre de la foto, y cuando tengas el nombre de la foto
en "Plantilla" solo presionar Ctrl + M y automáticamente
en base a la celda (con el nombre de la foto) seleccionada
te insertará la imágen; únicamente en el código tenemos
que cambiar la ruta de la carpeta donde están las fotos:

DirectImage = "C:\Documents and Settings\\\\\"

Y también la ubicación de donde quieras que la foto se
inserte, yo recomiendo en una celda especial en la parte
superior y no en la misma fila (solo por estética, prueba).

Selection.ShapeRange.Left = .Columns("B").Left
Selection.ShapeRange.Top = .Rows("2").Top

A sus órdenes.

Tec. Inf. Sergio A Campos H

Hola Sergio, te agradezco la ayuda, en cuanto pueda te


comunico el
resultado. Solo una cosa:
Tengo la base de datos en una hoja llamada "Base de


datos" (alli escribiré
los nombres de las fotos sin la extensión JPG en la


columna "Foto") y en
otra hoja la plantilla, llamada "Plantilla", que es donde


extraigo los datos
de la base incluída la foto en el Range H17:L34 .
¿como cambian las cosas?. Saludos y gracias.
Pepe Frasquet

"Sergio A Campos H" escribió


en el mensaje
news:2e72d01c46d26$d4f38350$
CUALQUIER DUDA VUELVES A EXPONER

Insertar una imágen en la hoja de cálculo. Al




seleccionar la celda debe de ser exactamente el nombre del
archivo sin extensión (debe de ser .jpg la imágen),
presionamos Ctrl + M y se insertará en la hoja actual la
imágen simpre y cuando sea el nombre correcto.

Que tal.

Nota: La macro se va a ejecutar con la combinación Ctrl+M,
puedes ejecutarla antes de modificarla para que veas si
ese es un buen lugar para mostrar la imágen.

*************ESTO ES SOLO SI QUIERES QUE LA FOTO APAREZCA
EN OTRA PARTE DE LA HOJA Y CON OTRO TAMAÑO (OPCIONAL).
Solo dos indicaciones que debes de hacer cuando quieras
ejecutar la macro, esto es según tu preferencia, lo debes
de modificar en
Menú>>Herramientas>>Macro>>Macros>>ViewImage>>modificar.





En la línea siguiente vas a cambiarle el valor a la
columna, dependiendo en donde quieras que se alinee la
imágen.
Selection.ShapeRange.Left = .Columns("B").Left

En la línea siguientes vas a cambiarle el valor a la Fila
(Rows), dependiendo en donde quieras que se alinee la
imágen.
Selection.ShapeRange.Top = .Rows("2").Top

En la línea siguiente vas a cambiarle el valor al zoom
(0.4 o menos, ejemplo: 0.3), dependiendo que tan reducido
quieras la imágen.
Selection.ShapeRange.ScaleWidth 0.4, msoFalse,
msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.4, msoFalse,
msoScaleFromTopLeft

EL CÓDIGO PARA LA MACRO >>>>>>>>>>>>>>>































Sub ViewImage()
'
' Macro1 Macro
' Macro grabada el 27/05/2003 por Sergio Alejandro Campos
Hdez
'
'Primeramente se definen las variables como "variantes"
Dim FromCell As Variant
Dim NoExistImage As Variant
Dim User As Variant
Dim DirectImage As Variant
User = Application.UserName
On Error GoTo NoExistImage
'En esta instrucción verifica si hay objetos de imágen y
'los borra para que aparezca el siguiente
ActiveSheet.DrawingObjects.Delete
With ThisWorkbook.Sheets("Hoja1")
FromCell = ActiveCell
'Con las variables antes dadas de alta, se abrirá la
imágen con en nombre que
'tiene la celda activa
DirectImage = "C:\Documents and
Settings\Isabel\Escritorio\Pepe Frasquet\Fichas de pisos\"
.Pictures.Insert (DirectImage) & FromCell & (".jpg")
'Selecciona la imágen y la ubica en la posición que a
continuación se muestra
.DrawingObjects.Select
Selection.ShapeRange.Left = .Columns("B").Left
Selection.ShapeRange.Top = .Rows("2").Top
Selection.ShapeRange.ScaleWidth 0.4, msoFalse,
msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.4, msoFalse,
msoScaleFromTopLeft
End With
Exit Sub
'Si la celda no contiene un nombre correcto aparecerá el
error
NoExistImage:
MsgBox "Está intentando mostrar una imágen que no existe
en la ruta especificada:" _
& vbCrLf & DirectImage & vbCrLf & vbCrLf & "Error " & CStr
(Err.Number) & " " & _
CStr(Err.Description), vbCritical, User
End Sub


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida