Compartir a través de

imagen seleccionada (Control+C) y pegar en PAINT (Control+V)

Anónimas
2011-12-12T21:23:25+00:00

Hola amigos.

Para completar una macro, en Visual Basic, necesitaría :

una imagen seleccionada con (control+C), pegarla en PAINT (YA ABIERTO) = (control+V) .

Luego cortar ésta imagen del PAINT = (control+X) y pegarla en un mail (windows Live Mail) = (control+V).

Desde ya descuento que algun genio me dará la respuesta. Gracias de antemano. Saludos y feleicidades a TODOS.

Microsoft 365 y Office | Excel | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios

Respuesta aceptada por el autor de la pregunta

  1. Héctor Miguel 71,595 Puntos de reputación
    2011-12-13T02:15:18+00:00

    hola, Daniel !

    suponiendo que la imagen ya esta insertada en la hoja de calculo y "pasa" por la coleccion "pictures" (no es necesario seleccionarla), para complementar la sentencia del envio de correos por WLM (correos antes), prueba con algo +/- como la siguiente macro (solo ajusta o encuentra el tiempo de retardo para la instruccion "Wait"...) y espera hasta que la imagen aparezca en el cuerpo del correo

    Sub Preparar_eMail()

       Dim Direccion As String, Asunto As String, Mensaje As String

       Direccion = "******@dominio.com"

       Asunto = "probando desde vba"

       Mensaje = "este es el mensaje"

       ActiveSheet.Pictures(1).Copy

       ActiveWorkbook.FollowHyperlink _

         "mailto:" & Direccion & "?subject=" & Asunto & "&body=" & Mensaje

      Application.Wait Now + TimeValue("0:00:05")

      SendKeys "^{end}{enter}^v"

    End Sub

    saludos,

    hector.

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios

9 respuestas adicionales

Ordenar por: Muy útil
  1. Héctor Miguel 71,595 Puntos de reputación
    2011-12-15T05:01:13+00:00

    hola, Daniel !

    (como te comentaba) WLM no expone su modelo de objetos a vba (tampoco el paint) por lo que es necesario manejarse con el metodo "sendkeys", que pudiera llegar a ser inexacto si algun evento (fuera de tu codigo y de tu control) deja como ventana activa la de una aplicacion que no es la que supones (o esperabas) que sea o si el idioma de dicha aplicacion no es el que administras con el metodo (???)

    en via de mientras, prueba con la siguiente macro (lleva comentarios previos a cada instruccion para tratar de que sea facil cualquier adaptacion a tu caso u otros ?)

    saludos,

    hector.

    Sub Preparar_eMail()

      Dim Direccion As String, Asunto As String, Mensaje As String

      ' estableces el valor de las variables '

      Direccion = Range("f4")

      Asunto = Range("f1")

      Mensaje = Range("f34")

      ' copias el rango de envio '

    '  Range("e5:ag52").CopyPicture xlScreen, xlPicture

      Range("c4:i22").CopyPicture xlScreen, xlPicture

      ' abres el paint '

      Shell "mspaint.exe", 1

      Application.Wait Now + TimeValue("0:00:02")

      ' pegas, cortas, cierras y contestas No (a guardar cambios en paint) '

      SendKeys "^v^x%{f4}n"

      ' abres un mensaje de correo nuevo '

      ActiveWorkbook.FollowHyperlink _

        "mailto:" & Direccion & "?subject=" & Asunto & "&body=" & Mensaje

      Application.Wait Now + TimeValue("0:00:05")

      ' vas al final del mensaje (ctrl + fin) _

        agregas dos lineas (enter + enter) _

        pegas (ctrl + v) _

        seleccionas (izq + der+der) _

        centras (ctrl + e) _

        y envias (ctrl + m) '

      SendKeys "^{end}{enter}{enter}^v{left}+{right 2}^e^m"

    End Sub

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios
  2. Anónimas
    2011-12-13T13:56:00+00:00

    Hola Javier.

    Definitivamente la respuesta de Hector funciona perfectamente, si lo que deseo seleccionar es la PICTURE1, pero yo lo que capturo es una sección de una hoja excel y si trato de pegarla directamente en el mail sin pasar por el PAINT, sale toda deformada. Mientras que si lo hago a travez del PAINT , sale perfecto.

    Mi proceso es el sigiente :

    • de la hoja excel, selecciono las celdas que deseo copiar (control+c)
    • abro el PAINT , la pego (control+V) y la corto (control+X)
    • abro el mail y pego (control+V). Queda pegada como imagen JPG.

    De esta forma manual, sale perfecto. Solo quiero automatizarlo y a travez del módulo de Héctor, reemplazar la PICTURE1 , por las celdas que quiero, pegarlas en el PAINT, recortarla y volver a pegar en el mail.

    Saludos

    0 comentarios No hay comentarios
  3. Anónimas
    2011-12-13T13:07:55+00:00

    hola

    estoy de acuerdo con la respuesta de hector miguel esa es la instruccion completa

    0 comentarios No hay comentarios
  4. Anónimas
    2011-12-13T09:38:11+00:00

    Hola Hector.

    Nuevamente gracias por tu tiempo.

    Lo he probado y funciona perfectamente. Solo que no puedo evitar el paso de pegar primero en el paint la parte de la planilla, pues al pegarla directamente en el correo,

    sale todo deformado. No olvides que no es una "imagen" sinó parte de la planilla donde

    estan  los cálculos. Primero debo convertirla en imagen, pegarla en el paint, luego cortarla y pegarla en el mail.

    Realmente no sé porqué, pero al hacerlo así, sale una imagen perfecta de la parte seleccionada, mientras que si lo pego directamente, sale toda distorsionada. Incluso, se superponen líneas de texto... etc.

    O sea que el paso de pegar (controV) primero en el paint, es inevitable (por ahora). Parece que al hacer este paso, se convierte automaticamente en JPG o similar.

    Saludos

    0 comentarios No hay comentarios