inviare immagine con thunderbird



  • inviare immagine con thunderbird
    di Marco Augusto (utente non iscritto) data: 29/08/2017 16:17:00

    Salve a tutti
    ho questa semplice macro per inviare email con thunderbird da un foglio excel e funziona perfettamente (Sendmail)

    Ora vorrei inviare come CORPO dell'email una immagine creata sempre con excel con il generatore di macro quest'altra (Macro 3)
     
    Sub sendmail() 
    Dim BodyMsg As String, Indirizzo As String, Oggetto As String 
        BodyMsg = Range("A3:").Value 
            Indirizzo = Range("A1").Value 
        Oggetto = Range("A2").Value 
            Shell "C:Program Files (x86)Mozilla Thunderbird	hunderbird -compose " _ 
            & Chr$(34) & "to='" & Indirizzo & "',subject='" & Oggetto & "',body='" & BodyMsg _ 
            & Chr$(34), vbNormalFocus 
        Application.Wait Now + TimeValue("00:00:03") 
        SendKeys "^{ENTER}" 
    End Sub 
    
    
    Sub Macro3()
        Range("C25:E38").Select
        Selection.Copy
        Range("H6:J19").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        Selection.Copy
        Range("H25").Select
        ActiveSheet.Pictures.Paste.Select
        ActiveSheet.Shapes.Range(Array("Picture 24")).Select
        Range("G23").Select
        ActiveSheet.Shapes.Range(Array("Picture 24")).Select
        Selection.ShapeRange.Shadow.Type = msoShadow34
        With Selection.ShapeRange.Line
            .Visible = msoTrue
            .ForeColor.RGB = RGB(0, 112, 192)
            .Transparency = 0
        End With
        With Selection.ShapeRange.Line
            .Visible = msoTrue
            .Weight = 2.25
        End With
        Range("L22").Select
        ActiveSheet.Shapes.Range(Array("Picture 24")).Select
        Application.CutCopyMode = False
        Selection.Copy   
    End Sub
    
    



  • di Friedrich data: 29/08/2017 20:22:57

    Ciao Marco Augusto,
    non ho modo di provare non avendo Thunderbird installato, ma dovrebbe funzionare incollando l’immagine nel corpo della mail, mediante SendKeys "^v" che equivale al comando Ctrl + v. Lascia vuota la cella A3 che corrisponde al corpo della mail. Ho “cucito” insieme le tue macro per creare l’immagine e quindi inviare la mail.

     
    Sub Macro3 ()
    	Dim BodyMsg As String, Indirizzo As String, Oggetto As String
    
    	Range("C25:E38").Select
    	Selection.Copy
    	Range("H6:J19").Select
    	Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    	:=False, Transpose:=False
    	Application.CutCopyMode = False
    	Selection.Copy
    	Range("H25").Select
    	ActiveSheet.Pictures.Paste.Select
    	ActiveSheet.Shapes.Range(Array("Picture 24")).Select
    	Range("G23").Select
    	ActiveSheet.Shapes.Range(Array("Picture 24")).Select
    	Selection.ShapeRange.Shadow.Type = msoShadow34
    	With Selection.ShapeRange.Line
    		.Visible = msoTrue
    		.ForeColor.RGB = RGB(0, 112, 192)
    		.Transparency = 0
    	End With
    	With Selection.ShapeRange.Line
    		.Visible = msoTrue
    		.Weight = 2.25
    	End With
    	Range("L22").Select
    	BodyMsg = Range("A3").Value 
    	Indirizzo = Range("A1").Value 
    	Oggetto = Range("A2").Value 
    	Shell "C:Program Files (x86)Mozilla Thunderbird	hunderbird -compose " _ 
    	& Chr$(34) & "to='" & Indirizzo & "',subject='" & Oggetto & "',body='" & BodyMsg _ 
    	& Chr$(34), vbNormalFocus 
    	ActiveSheet.Shapes.Range(Array("Picture 24")).Select
    	Application.CutCopyMode = False
    	Selection.Copy 
    	Application.Wait Now + TimeValue("00:00:03") 
    	SendKeys "^v"  
    	SendKeys "^{ENTER}"
    End Sub



  • di patel data: 29/08/2017 20:46:50

    inviare come CORPO ? non come allegato ?





  • di marco (utente non iscritto) data: 30/08/2017 11:54:33

    Grazie Friedrich; risolta perfettamente.



  • di marco (utente non iscritto) data: 30/08/2017 19:07:31

    Ciao Friedrich e tutti
    Ho modificato leggermente il codice perchè mi serviva che facesse entrambe le cose:
    ossia incollare sia i dati come body e sia come immagine.
    L'immagine l'ho modificata ed ora è linkata ad un range di celle (b19:d33) che variano al variare dei dati nel range b11:q11
    Ora la macro funziona perfettamente se la lancio con una scorciatoia da tastiera (ctrl i) oppure se premo il tasto esegui.
    Viceversa se l'associo ad un pulsante di controllo modulo i dati dell'immagine sono sfalsati temporalmente rispetto a quelli realmente inseriti ed a quelli del body.
    Esempio: se inserisco 1 e premo (ctrl i) risulterà 1 immagine ed 1 body
    Poi inserisco 2 e premo il pulsante con associata la macro risulterà 1 immagine e 2 body
    inserisco 3 e premo (ctrl i) risulterà di nuovo corretto 3 immagine ed 3 body
    ora non è che sia un grande problema premere (ctrl i), però vorrei capire come mai e nel caso correggere.

     
    Sub NATOMO()
    Dim BodyMsg As String, Indirizzo As String, Oggetto As String
    ultimariga = Cells(Rows.Count, "i").End(xlUp).Row
        ActiveSheet.Range("i" & ultimariga, "ae" & ultimariga).Copy
        Sheets("INVIAMAIL").Select
        Range("B2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Dim cell As Range
    For Each cell In Sheets("INVIAMAIL").Range("b11:q11")
    strbody = strbody & cell.Value & vbNewLine
    Next
    Indirizzo = Range("A7").Value
    Oggetto = Range("A8").Value
    Shell "C:Program Files (x86)Mozilla Thunderbird	hunderbird -compose " _
    & Chr$(34) & "to='" & Indirizzo & "',subject='" & Oggetto & "',body='" & strbody & Chr$(34), vbNormalFocus
    ActiveSheet.Shapes.Range(Array("Picture 33")).Select
        Application.CutCopyMode = False
        Selection.Copy
    Application.Wait Now + TimeValue("00:00:03")
    SendKeys "^v"
    SendKeys "^{ENTER}"
    Sheets("BASE").Select
        Range("I1").Select
        ' va in ultima cella piena
    Selection.End(xlDown).Select
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "ito"
    ActiveCell.Interior.ColorIndex = 6
    Range("I1").Select
        ' va in ultima cella piena
    Selection.End(xlDown).Select
    ' scende nella cella successiva
    ActiveCell.Offset(1).Select
    Selection.ClearContents
    End Sub