Guardar imagen de un Din A4

20/07/2009 - 11:44 por José Rafael | Informe spam
Hola amigos:
Estoy intentando guardar una imagen de una ficha de cliente que tiene el
tamaño de un DINA4 y me sale un tanto distorsionada (primer problema),
ademas me gustaría que al guardarla lo hicier con el nombre del cliente que
esta registrado en la variable "nombreimagen" y no acierto a componer la
dirección correcta o mejor dicho me la archiva como "C:\IMAGENES DE FICHAS
DE CLIENTES\_&nombreimagen_&" y no como debería ser, que sería con el valor
de la variable "nombreimagen" que está cargada con el valor de la celda
C10... es decir, como ejemplo: "C:\IMAGENES DE FICHAS DE CLIENTES\Classyc,
S.L.", siendo "Classyc, S.L." el contenido de la variable "nombreimagen" en
esta ficha concreta, algo hago mal ...(segundo problema)
¿me podéis ayudar con los dos problemas?. He aqui el código:

GuardarImagen()
' GuardarImagen Macro
' Macro grabada el 15/07/2009 por hes040
'
' Acceso directo: Ctrl+Mayús+x
Dim choObj As ChartObject, chGráf As Chart, ptImagen As Object
Dim blnGuardado As Boolean
Dim nombreimagen As String

Worksheets("Reverso ficha").Range("A1:J73").CopyPicture
appearance:=xlScreen, Format:=xlPicture
nombreimagen = Range("C10").Value
'MsgBox prompt:=nombreimagen
Set choObj = ActiveSheet.ChartObjects.Add(0, 0, 800, 600)
Set chGráf = choObj.Chart

choObj.Activate
chGráf.ChartArea.Select
chGráf.Paste
Set ptImagen = chGráf.Pictures(1)

ptImagen.Left = 0
ptImagen.Top = 0

choObj.Border.LineStyle = xlNone
choObj.Width = ptImagen.Width + 7
choObj.Height = ptImagen.Height + 7

blnGuardado = chGráf.Export(Filename:="C:\IMAGENES DE FICHAS DE
CLIENTES\_&nombreimagen_&", filtername:="GIF")
If Not blnGuardado Then MsgBox prompt:="Problemas al guardar la
imagen.", Buttons:=vbOKOnly + vbExclamation
choObj.Delete

Set choObj = Nothing
Set chGráf = Nothing
Set ptImagen = Nothing
End Sub

Saludos
José Rafael-Valencia (España)

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/07/2009 - 01:23 | Informe spam
hola, José Rafael !

... guardar una imagen... tamaño de un DINA4 y me sale un tanto distorsionada (primer problema)
... guardarla... con el nombre... registrado en la variable "nombreimagen" y no acierto a componer la dirección correcta
... la archiva como "C:\IMAGENES DE FICHAS DE CLIENTES\_&nombreimagen_&" y no... con el valor... de la celda C10...



prueba con algo +/- como lo siguiente:

Sub GuardarImagen()
Dim Izq As Single, Arr As Single, Ancho As Single, Alto As Single
Application.DisplayAlerts = False
With Range("a1:j73")
Izq = .Left: Arr = .Top: Ancho = .Width: Alto = .Height: .CopyPicture
End With
With ActiveSheet.ChartObjects.Add(Izq, Arr, Ancho, Alto)
.Chart.Paste
.Chart.Export "c:\imagenes de fichas de clientes\_" & Range("c10") & "_.gif"
.Delete
End With
Application.DisplayAlerts = True
End Sub

saludos,
hector.

__ el codigo expuesto __
GuardarImagen()
' GuardarImagen Macro
' Macro grabada el 15/07/2009 por hes040
' Acceso directo: Ctrl+Mayús+x
Dim choObj As ChartObject, chGráf As Chart, ptImagen As Object
Dim blnGuardado As Boolean
Dim nombreimagen As String
Worksheets("Reverso ficha").Range("A1:J73").CopyPicture appearance:=xlScreen, Format:=xlPicture
nombreimagen = Range("C10").Value
'MsgBox prompt:=nombreimagen
Set choObj = ActiveSheet.ChartObjects.Add(0, 0, 800, 600)
Set chGráf = choObj.Chart
choObj.Activate
chGráf.ChartArea.Select
chGráf.Paste
Set ptImagen = chGráf.Pictures(1)
ptImagen.Left = 0
ptImagen.Top = 0
choObj.Border.LineStyle = xlNone
choObj.Width = ptImagen.Width + 7
choObj.Height = ptImagen.Height + 7
blnGuardado = chGráf.Export(Filename:="C:\IMAGENES DE FICHAS DE CLIENTES\_&nombreimagen_&", filtername:="GIF")
If Not blnGuardado Then MsgBox prompt:="Problemas al guardar la imagen.", Buttons:=vbOKOnly + vbExclamation
choObj.Delete
Set choObj = Nothing
Set chGráf = Nothing
Set ptImagen = Nothing
End Sub
Respuesta Responder a este mensaje
#2 José Rafael
21/07/2009 - 10:15 | Informe spam
Hola Héctor:
A menudo me recuerdas a Franz Beckenbauer que fue un excelente jugador de
fútbol alemán, rápido, elegante, práctico, conciso y supereficiente...
gracias por tu ayuda que es impagable. Tu propuesta funciona como
Beckenbauer, a las mil maravillas Gracias una vez mas. (hace mucho
tiempo que tengo el privilegio de recibir tus sabias recomendaciones,
propuestas, códigos, etc..)
Soy de Valencia (España), si alguna vez necesitas algo de mí no dudes en
pedirmelo. >
José Rafael



"Héctor Miguel" escribió en el mensaje
news:
hola, José Rafael !

... guardar una imagen... tamaño de un DINA4 y me sale un tanto
distorsionada (primer problema)
... guardarla... con el nombre... registrado en la variable
"nombreimagen" y no acierto a componer la dirección correcta
... la archiva como "C:\IMAGENES DE FICHAS DE CLIENTES\_&nombreimagen_&"
y no... con el valor... de la celda C10...



prueba con algo +/- como lo siguiente:

Sub GuardarImagen()
Dim Izq As Single, Arr As Single, Ancho As Single, Alto As Single
Application.DisplayAlerts = False
With Range("a1:j73")
Izq = .Left: Arr = .Top: Ancho = .Width: Alto = .Height: .CopyPicture
End With
With ActiveSheet.ChartObjects.Add(Izq, Arr, Ancho, Alto)
.Chart.Paste
.Chart.Export "c:\imagenes de fichas de clientes\_" & Range("c10") &
"_.gif"
.Delete
End With
Application.DisplayAlerts = True
End Sub

saludos,
hector.

__ el codigo expuesto __
GuardarImagen()
' GuardarImagen Macro
' Macro grabada el 15/07/2009 por hes040
' Acceso directo: Ctrl+Mayús+x
Dim choObj As ChartObject, chGráf As Chart, ptImagen As Object
Dim blnGuardado As Boolean
Dim nombreimagen As String
Worksheets("Reverso ficha").Range("A1:J73").CopyPicture
appearance:=xlScreen, Format:=xlPicture
nombreimagen = Range("C10").Value
'MsgBox prompt:=nombreimagen
Set choObj = ActiveSheet.ChartObjects.Add(0, 0, 800, 600)
Set chGráf = choObj.Chart
choObj.Activate
chGráf.ChartArea.Select
chGráf.Paste
Set ptImagen = chGráf.Pictures(1)
ptImagen.Left = 0
ptImagen.Top = 0
choObj.Border.LineStyle = xlNone
choObj.Width = ptImagen.Width + 7
choObj.Height = ptImagen.Height + 7
blnGuardado = chGráf.Export(Filename:="C:\IMAGENES DE FICHAS DE
CLIENTES\_&nombreimagen_&", filtername:="GIF")
If Not blnGuardado Then MsgBox prompt:="Problemas al guardar la
imagen.", Buttons:=vbOKOnly + vbExclamation
choObj.Delete
Set choObj = Nothing
Set chGráf = Nothing
Set ptImagen = Nothing
End Sub




Respuesta Responder a este mensaje
#3 Héctor Miguel
21/07/2009 - 23:31 | Informe spam
hola, José Rafael !

eso de "conciso"... no siempre puedo serlo (lo demas tampoco, pero igual...)
te agradezco los comentarios (y el ofrecimiento) :))

saludos,
hector.
Respuesta Responder a este mensaje
#4 José Rafael
22/07/2009 - 10:34 | Informe spam
Hola Héctor:
Por lo de conciso no hay mas que ver la diferencia entre tu código y el que
yo tenía mucho mas extenso pero que no funcionaba siquiera correctamente,...
existen diversos caminos para hacer un trabajo y en mi opinión siempre
eliges el mas "conciso".. solo pretendo hacer justicia con tu encomiable
labor de asesoramiento.
Y dicho esto...
Me ha surgido una demanda nueva sobre el código que me proporcionaste y es
que una vez hecha " la foto" de la ficha, tengamos la posibilidad de
enviarlo por correo electronico mediante Outlook 2003 (supongo que me abrirá
la aplicación y me dará opción de elegir al destinatario). Es decir, ya
tengo la posibilidad de guardarlo, que es el codigo que me proporcionaste,
ahora necesitaría tener ademas la posibilidad de enviarlo tambien por correo
electronico (si lo necesitara). Gracias anticipadas..
saludos

José Rafael

Este es el código que me proporcionaste:
Sub GuardarImagen()
Dim Izq As Single, Arr As Single, Ancho As Single, Alto As Single
Application.DisplayAlerts = False
With Range("a1:j73")
Izq = .Left: Arr = .Top: Ancho = .Width: Alto = .Height: .CopyPicture
End With
With ActiveSheet.ChartObjects.Add(Izq, Arr, Ancho, Alto)
.Chart.Paste
.Chart.Export "c:\imagenes de fichas de clientes\_" & Range("c10") &
"_.gif"
.Delete
End With
Application.DisplayAlerts = True
End Sub






"Héctor Miguel" escribió en el mensaje
news:
hola, José Rafael !

eso de "conciso"... no siempre puedo serlo (lo demas tampoco, pero
igual...)
te agradezco los comentarios (y el ofrecimiento) :))

saludos,
hector.

Respuesta Responder a este mensaje
#5 Héctor Miguel
22/07/2009 - 22:04 | Informe spam
hola, José Rafael !

Me ha surgido una demanda nueva... y es que una vez hecha " la foto" de la ficha
tengamos la posibilidad de enviarlo por correo electronico mediante Outlook 2003
(supongo que me abrirá la aplicación y me dará opción de elegir al destinatario).
... ahora necesitaría tener ademas la posibilidad de enviarlo tambien por correo electronico (si lo necesitara)...



uno de los mejores lugares con ejemplos para envios por correo electronico desde excel
(si no es que el mejor de todos) es la pagina de Ron de Bruin (incluso hay complementos especiales)

visita su seccion de codigos (porque hay muchas maneras de envios segun cliente de correos):
Example Code for sending mail from Excel
http://www.rondebruin.nl/sendmail.htm

revisa la seccion dedicada a los adjuntos:
Outlook object model (attachment)
y los ejemplos para:
Mail a different file(s) to each person in a range
http://www.rondebruin.nl/mail/folder2/files.htm

analiza los comentarios acerca de la seguridad en OL (y el "Click-Yes")
y/o la alternativa para enviar por otros medios como CDO

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida