crea pdf e invia mail



  • crea pdf e invia mail...
    di ciccius_prime data: 18/07/2014 14:57:36

    buongiorno a tutti e grazie anticipatamente a chi mi dedicherà del tempo,

    vi scrivo perchè vorrei facilitare il compito ai miei colleghi meno "pratici" di me sul pc...

    ho un file excel che gestisce le spedizioni postali della mia "azienda", ho gia automatizzato la stampa dei fogli che mi servono con una macro che allego e ora vorrei ulteriormente semplificare con un altra macro, magari da implementare in questa "stampatutto"...

    l'esigenza è quella di creare un pdf di un foglio specifico (all.mail) e allegarlo a una mail da mandare tramite outlook...

    premetto che ho avuto gia difficoltà a selezionare la stampante sul pc con vba ... infatti ho aggirato il problema semplicemente non ponendomelo :( ....uso stampante predefinita...:(

    spero di non essere stato troppo logorroico...e soprattutto di essermi spiegato.


    al momento ho tamponato con un msgbox... ma vorrei risolverlo.
     
    Sub STAMPATUTTO()
    Dim cs As Integer
    '   STAMPA I FOGLI COMPILATI
       cs = Sheets("Form").Range("w42")
        On Error Resume Next
        Sheets(data).Select
        Range("Area_stampa").PrintOut copies:=2
    '   stampa specifica TABELLA solo SE compilata
        Range("tabracstampa").PrintOut copies:=cs
    '    stampa la distinta "racc" solo se compilata
        Sheets("RACC").Activate
        If Range("b11") <> blank Then
            Range("Area_stampa").PrintOut copies:=2
        End If
    '      stampa la distinta "ASS" solo se  compilata
        Sheets("ASS").Activate
        If Range("b11") <> blank Then
            Range("Area_stampa").PrintOut copies:=2
        End If
        Sheets("All. mail").Activate
        MsgBox ("RICORDATI DI CREARE GLI ALLEGATI PER LA MAIL!!!")
    End Sub



  • di ciccius_prime data: 19/07/2014 09:54:26

    rubacchiando un post di abis
    sto cercando di risolvere con questo...

    ExportAsFixedFormat

    soluzione interessante devo solo farlo girare come dico io..implementarlo nelle condizioni della mia macro stampatutto...

    ad maiora



  • di lepat (utente non iscritto) data: 19/07/2014 10:08:44

    ti allego un esempio da adattare
     
    Sub PDFEmail()
    Dim MyFilePath As String
    Dim MyFileName As String
    Dim OutlookApp As Outlook.Application
    Dim MItem As Outlook.MailItem '<-- Early binding
    Dim EmailAddress As String
    Dim EmailSubject As String
    Dim Msg As String
    Application.ScreenUpdating = False
    'Activate the Transaction Form worksheet
    Worksheets("Caravan1").Activate
    'Specify email address, email subject, and a brief message
    EmailAddress = Range("U6")
    EmailSubject = Range("U7")
    Msg = "Please see the attached file which contains your invoice."
    MyFilePath = ThisWorkbook.Path & ""
    MyFileName = ActiveSheet.Name
    Range("J1:R51").ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
                MyFilePath & MyFileName, Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=  False
    Set OutlookApp = New Outlook.Application
    'Send out the email
    Set MItem = OutlookApp.CreateItem(olMailItem)
    With MItem
        .To = EmailAddress
        .Subject = EmailSubject
        .Body = Msg
        .Attachments.Add MyFilePath & MyFileName & ".PDF"
        .Send
    End With
    Set OutlookApp = Nothing
    MsgBox "Email has been sent."
    Application.ScreenUpdating = True
    End Sub



  • di ciccius_prime (utente non iscritto) data: 19/07/2014 11:35:07

    ti ringrazio lepat... era quello che stavo cercando... ora provo ad adattarlo al mio caso...

    fin ora ho già fatto passi da gigante a creare da soli i pdf.... se riesco nel mio intento mi fanno santo... oppure non toccano più il pc perchè fà tutto da solo:D....

    ad maiora



  • di ciccius_prime data: 20/07/2014 15:28:11

    eureka....grazie al vostro aiuto e a quello di pochi altri milioni di forumisti.... c'è l'ho fatta----

    ora con un semplice click i miei colleghi potranno stampare, creare il pdf e salvarlo, mandare la mail con questi allegati ... praticamente devono solo ricordarsi di salvare il file alla fine del lavoro:d

    posto la versione completa della mia sub...spero di essere d'aiuto a qlc altro..

    nb:
    - i file pdf creati (dracc e dass) sono diversi e vengono allegati alla mail solo se esistenti (=foglio compilato).
    - ricordarsi di attivare dall'editor vba strumenti il componente di outlook;)

    grazie ancora a chi mi ha postato prima di me
     
    Sub STAMPATUTTO()
    
    Dim cs As Integer
    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    
    '
    '   STAMPA I FOGLI COMPILATI
    '
    '
        cs = Sheets("Form").Range("w42")
    '
        On Error Resume Next
        Sheets(data).Select
        Range("Area_stampa").PrintOut copies:=2
    
    
    '   stampa NEL NUMERO OCCORRENTE DI COPIE DELLA TABELLA SPECIFICA
    
    
        Range("tabracstampa").PrintOut copies:=cs
    
    '
    '    stampa e crea la distinta "racc" solo se compilata
    '
        data = Sheets("RACC").Range("c8")
    
        If Foglio3.Range("b11") <> blank Then
           Range("Area_stampa").PrintOut copies:=2
            Foglio2.Range("$B$10:$F$61").AutoFilter Field:=1, Criteria1:="<>"
        dracc = Application.GetSaveAsFilename("PERCORSOFILE
    accomandate del " & data, filefilter:="PDF (*.pdf), *.pdf", Title:="Salva PDF")
        If dracc = Falso Then Exit Sub
                Foglio2.ExportAsFixedFormat _
                    Type:=xlTypePDF, _
                    Filename:=dracc, _
                    Quality:=xlQualityStandard, _
                    IncludeDocProperties:=True, _
                    IgnorePrintAreas:=False, _
                    OpenAfterPublish:=False
    
        End If
    
    '      stampa e crea la distinta "ASS" solo se  compilata
    '
    
        If Foglio9.Range("b11") <> blank Then
           Range("Area_stampa").PrintOut copies:=2
            Foglio10.Range("$B$10:$F$61").AutoFilter Field:=1, Criteria1:="<>"
    
        dass = Application.GetSaveAsFilename("PERCORSOFILEassicurate del " & data, filefilter:="PDF (*.pdf), *.pdf", Title:="Salva PDF")
        If dass = Falso Then Exit Sub
        Foglio10.ExportAsFixedFormat _
                    Type:=xlTypePDF, _
                    Filename:=dass, _
                    Quality:=xlQualityStandard, _
                    IncludeDocProperties:=True, _
                    IgnorePrintAreas:=False, _
                    OpenAfterPublish:=False
        End If
        
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(olMailItem)
    
    '	manda la mail con gli allegati se creati    
    
        With OutMail
            .To = "address@dominio"
            .CC = ""
            .BCC = ""
            .Subject = "spedizione odierna"
            .Body = "Buongiorno," & Chr(13) & "blablabla" & Chr(13) & Chr(13) & "Distinti saluti." & Chr(13) & Chr(13) & "firma" & Chr(13)
            .Attachments.Add (dracc)
            .Attachments.Add (dass)
     '       .Display
     ' abilitando display e disabilitando send si può vedere cosa si sta mandando
    	viceversa si puo verifica in posta inviata da outlook      
            .Send
        End With
    
    
        Sheets(data).Activate
    	 msgbox ("sei stato bravo...." & vbLf & _
            "ora ricordati di SALVARE!!!")
    
    End Sub



  • di mb (utente non iscritto) data: 21/07/2014 11:23:27

    ho letto questa discuzzione molto interessante ma mi sono inbattuto in un problema duplice

    su tutti i computer che uso non ho outlook ma outlook express e xp come sistema operativo
    e un'altro con windows live mail e windows7

    c'è qualcuno che mi può dire quale modifica apportare per poter utilizzare la procedura postata

    grazie



  • di ciccius_prime (utente non iscritto) data: 21/07/2014 11:36:49

    mi sembra d'aver letto in qlc post che l'automazione vale per outlook... credo in virtù del fatto che so figli della stessa mamma... microsoft... non saprei come lanciare windows mail... prova a vedere se lo trovi in strumenti iferimenti dall'editor vba.... magari se lo abiliti da li.. potresti riuscire a lanciare lo stesso l'applicativo mail....

    è chiaro che le mie competenze si fermano al metodo prova e riprova... non ho fatto studi nei linguaggi...

    buona fortuna



  • di lepat (utente non iscritto) data: 21/07/2014 11:57:56

    con una funzione di questo tipo puoi inviare mail con il client che desideri, basta adattarla
     
    Public Function fSendThunderbird(strTo As String, strSubject As String, strBody As String)
        strCommand = "C:Program FilesMozilla Thunderbird	hunderbird"
        strCommand = strCommand & " -compose " & Chr$(34) & "mailto:" & strTo & "?"
        strCommand = strCommand & "subject=" & Chr$(34) & strSubject & Chr$(34) & "&"
        strCommand = strCommand & "body=" & Chr$(34) & strBody & Chr$(34)
        Call Shell(strCommand, vbNormalFocus)
    End Function



  • di mb (utente non iscritto) data: 21/07/2014 12:28:42

    grazie a tutti per le risposte

    buona giornata