Condividi tramite

Invio Mail in formato HTML

Anonimo
2013-01-12T22:11:20+00:00

* Titolo Originale: Grassetto VBA *

Ciao a tutti. E' la prima volta che mi iscrivo ad un forum e Vi chiedo la massima comprensione. Grazie ad un aiuto, ho creato una VBA che mi consente di estrarre dei dati da un figlio Excel e caricarli sulle @ dei clienti, così da inviare ad ogni indirizzo indicato nello stesso foglio i prezzi dei prodotti relativi. La mia esigenza è quella di riportare i singoli prezzi sulla mail in grassetto. Da un po' mi hanno installato Office 2010, Qualcuno potrebbe aiutarmi? Il codice che utilizzo è:

Private Sub CommandButton1_Click()

Dim myOutlook As Object

Dim myMailItem As Object

Dim rngRow As Range

Dim risp As Integer

risp = MsgBox("Vuoi Inviare le Quotazioni?", 4 + 32, "SCEGLI")

If risp = 6 Then

riga = 6

Const accapo = vbCr

While (riga <= 7)  'modificare il numero fino alla riga che si intende inviare

variabileEmailDelDestinatario = Foglio1.Cells(riga, 20)

Set otlApp = CreateObject("Outlook.Application")

Set otlNewMail = otlApp.CreateItem(olMailItem)

fName = ActiveWorkbook.Path & "" & ActiveWorkbook.Name

With otlNewMail

.To = variabileEmailDelDestinatario

.Subject = "Quotazioni Repsol Italia S.p.A. Base di Carico Civitavecchia per il " & Date + 1 '& " e " & Date + 3

.Body = "AVVISO:  " & Trim(Foglio1.Cells(riga, 22)) & accapo & "FIDO RESIDUO:  " & Trim(Foglio1.Cells(riga, 24)) & accapo & "SCADUTO:  " & Trim(Foglio1.Cells(riga, 26)) & accapo & accapo & "Spett.le:      " & Trim(Foglio1.Cells(riga, 8)) & accapo & "Codice Cliente:    " & Trim(Foglio1.Cells(riga, 5)) & accapo & accapo & "Autotrazione  €/mc:    " & Trim(Foglio1.Cells(riga, 9)) & accapo & "Auto E.E. - Motopesca  €/mc:         " & Trim(Foglio1.Cells(riga, 11)) & accapo & "Agricolo  €/mc:       " & Trim(Foglio1.Cells(riga, 10)) & accapo & "Riscaldamento  €/mc:     " & Trim(Foglio1.Cells(riga, 12)) & accapo & "Benzina  €/mc:         " & Trim(Foglio1.Cells(riga, 13)) & accapo & "Auto Sac  €/mc:       " & Trim(Foglio1.Cells(riga, 14)) & accapo & "0,1 S  €/mc:       " & Trim(Foglio1.Cells(riga, 15)) & accapo & accapo & "Cordiali saluti." & accapo & "Paolo D'Ambra" & accapo & "Mobile:   +39 331 6061122" & accapo & "Fax n°:   +39 06 83395108" & accapo & "___@___.___"

.Send

End With

riga = riga + 1

Wend

Else

End If

End Sub

In pratica, (Foglio1.Cells(riga, xx)) devono essere in grassetto sulla @.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-03-15T08:14:56+00:00

Ciao Paolo,

sono contento del tuo entusiasmo, che condivido ... l'appetito vien mangiando!!!

Ricordati però alcune regole fondamentali:

  • questo forum nasce per tentare di dare piccole soluzioni a piccoli problemi;
  • non personalizzare le richieste rivolgendoti ad un a persona in particolare, rischi di perdere le risposte degli altri partecipanti che potrebbero sentirsi esclusi;
  • evita di concentrare in un'unico thread tutti i problemi che incontri: cerca di "atomizzare" le tue richieste in modo da consentire anche agli altri partecipanti di intervenire/aiutarti e rendere le tue domande (e le conseguenti risposte) utilizzabili anche da altri utenti con le stesse esigenze.

Detto questo, al momento, non ho suggerimenti particolari da darti se non quello di iniziare a lavorare sul tuo progetto.

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-02-13T11:41:31+00:00

Ciao Paolo,

i cicli While ... Wend sono inseriti in VBA solo per compatibilità ma in effetti appartengono alla categoria delle istruzioni "deprecate".

Uno dei limiti maggiori è proprio la mancanza di un'istruzione Exit che per uscire dal ciclo nel momento in cui si raggiunge una determinata condizione.

Non spieghi cosa intendi per riga non valorizzata per cui presumo una riga totalmente vuota.

Volendo restare con il tuo ciclo potresti modificarlo così


While (Not Me.Cells(riga, 5) = Empty) And (riga <= 12)

    ....

Wend


oppure modificalo utilizzando un costrutto Do --> Loop che prevede l'istruzione Exit Do


Do While (riga <= 12)

    If Not Me.Cells(riga,5).Value = Empty Then

        ....

    Else

        Exit Do

Loop


Nello specifico il test viene fatto sulle celle della colonna E ovvero il Codice Cliente.

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-02-12T09:04:01+00:00

Ciao Paolo,

prova a vedere il file Gasolio modificato.xls

Ho dovuto modificare la formula nella colonna AB del foglio 1 per evitare di visualizzare l'errore quando il cliente non veniva trovato nei dati importati.

Fai attenzione che il file csv deve essere salvato preventivamente sul disco e non aperto dalla mail.

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-02-10T08:42:39+00:00

Ciao Paolo,

prima di modificare ulteriormente qualsiasi altra riga di codice prova a mettere giù con chiarezza il flusso che dovrebbe eseguire la macro. Io, credo, di aver capito quanto segue:

  1. arriva una mail con un allegato. Doppio click sull'allegato per aprirlo
  2. apri il tuo file "master" e lanci la macro
  3. viene eliminato il contenuto esistente del foglio Scaduti e sostituito con il contenuto del primo foglio del file csv aperto.
  4. viene chiuso il file csv e applicati una serie di filtri al nuovo contenuto del foglio scaduti in modo da creare nuovi file excel (ognuno con i dati derivati da uno dei filtri applicati). I nuovi fogli creati vengono inviati per mail a destinatari prefissati e poi eliminati. Tutti ad eccezione del foglio con i dati filtrati "PD" (che non viene neanche inviato per mail).
  5. Alla fine dovrà rimanere aperto solo il file PD mentre la cartella "master" verrà chiusa salvando le modifiche intervenute (i nuovi dati) ma togliendo tutti gli eventuali filtri applicati.

Dei precedenti punti, quello che a mio avviso andrebbe rivisto è proprio il primo. Come hai potuto vedere il nome del file csv aperto direttamente dalla mail viene modificato aggiungendo un progressivo derivante dal numero dei files con lo stesso nome esistenti nell'area temporanea. La via più sicura, a mio avviso, resta quella di salvare il file csv sul tuo disco e poi utilizzare gli strumenti opportuni (filedialog ne è solo un esempio) per rintracciarlo ed aprirlo. La macro si occuperà, oltre che di copiare i suoi dati e chiuderlo, anche di cancellarlo dal disco.

Come dicevo all'inizio, prova ad elencare, scrivendoli, i vari passi che la macro dovrebbe compiere.

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-02-04T09:29:31+00:00

Ciao Paolo,

mi fa piacere che tu abbia compreso lo spirito della mia risposta.

Una piccola annotazione al codice che hai mostrato: il "Case Else" che hai inserito, oltre a piacerti, ha in verità una sua utilità in quanto in questo modo hai coperto tutti i giorni della settimana. E' buona regola di programmazione, nel caso in cui i precedenti "Case" non coprano tutto il range delle possibilità, inserire un Case Else per gestire i casi residui. Puoi tuttavia semplificarlo in questo modo:


MsgBox("OGGI  NON  SI  INVIANO  LE  QUOTAZIONI !!!" _

, vbOKOnly + vbExclamation, "E' Sabato o Domenica !!!!")

Exit Sub

---

In quanto la tua MsgBox per definizione prevede l'unica risposta OK (vbOkOnly)

In merito al file csv da caricare: sappiamo che ti arriva per mail. Non sappiamo però:

  • se ha sempre lo stesso nome;
  • se lo salvi sul disco/lo apri direttamente dalla mail;

La scelta del metodo da utilizzare è strettamente correlata a queste due domande. Se il file lo apri dalla mail e ha sempre lo stesso nome, puoi riferirti alla cartella di lavoro aperta (file CSV) istanziando un oggetto Workbook in questo modo:


Dim wk as Workbook

Set wk = Application.Workbooks("NomeTuaCartellaAperta.csv")


e di conseguenza riferirti all'unico foglio in cui sono contenuti i dati da filtrare così


Dim sh as Worksheet

Set sh = wk.Worksheets(1)


Se invece il file cambia ogni volta il nome, oppure non lo apri direttamente dalla mail ma lo salvi prima sul disco, ti occorre un passaggio intermedio per aprire il file. In questo caso puoi cercare nell'help di Excel l'oggetto FileDialog.

Prova, cerca, adatta, ma soprattutto cerca anche di capire ciò che fai.

Se hai problemi sono qua.

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-28T10:41:26+00:00

Ciao Paolo,

per la prima domanda, sostituisci il blocco


                    .SaveAs Filename:=cSavePath & "Affidamenti " & aFilter(i, 1), _

                        FileFormat:=xlExcel8

                        .Close


con


                    .SaveAs Filename:=cSavePath & "Affidamenti " & aFilter(i, 1), _

                        FileFormat:=xlExcel8

                    If Not aFilter(i, 1) = "PD" Then

                        .Close

                    End If


La seconda richiesta non l'ho invece capita. Non trovo la colonna K nel file.

Se si tratta di una nuova richiesta è consigliabile aprire un nuovo thread per dare visibilità a tutti dell'eventuale soluzione.

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-25T09:35:31+00:00

Sarebbe bello se potessi, però, riuscire a modificare l'intestazione delle colonne da spagnolo ad italiano con parole fisse in grassetto.

Mi sono poi accorto che la colonna B può essere eliminata nei file generati.

Ciao Paolo,

sostituisci il blocco


                    With sh1

                        .UsedRange.EntireColumn.AutoFit

                        .Range("A1").Select

                    End With


con con il seguente


                    With sh1

                        .Columns(2).Delete

                        With .Range("A1:I1")

                            .Value = Array("ColonnaA", "ColonnaB", "ColonnaC", "ColonnaD", _

                                "ColonnaE", "ColonnaF", "ColonnaG", "ColonnaH", "ColonnaI")

                            .Font.Bold = True

                        End With

                        .UsedRange.EntireColumn.AutoFit

                        .Range("A1").Select

                    End With


Modifica ovviamente i nomi delle colonne con quelli che vuoi assegnare

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-22T11:03:49+00:00

Penso che ci vedremo sicuramente sulla rotonda di Ostia per bere le birre che hai messo in palio!!!

Per quanto riguarda il codice, non conosco il contesto e mi risulta difficile ricostruirlo.

Prova a condividere un file con dati di esempio in modo da lavorare su una struttura reale.

p.s.1: ho modificato il titolo del thread per una maggiore/migliore visibilità del suo contenuto

p.s.2: se il file va allegato alla mail a cui fa riferimento questo thread possiamo continuare qui

altrimenti sposto la discussione in un nuovo thread. Fammi sapere

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-18T09:48:50+00:00

Ciao Paolo,

piccole piccole dici .... mmm concordo sulla prima richiesta, la seconda invece non è così immediata. Vediamo:

  • per rendere una cifra in migliara (separate da punto) e decimali (separati da virgola) puoi anteporre all'istruzione che rintraccia il valore nel foglio il comando format ad esempio in questo modo:

Format(Trim(Foglio1.Cells(riga, 9)),"#,##0.00")


  • per quanto riguarda la firma e l'immagine. Per farlo occorre passare per i modelli di Outlook.

La prima cosa da fare consiste quindi nel creare un modello di messaggio outlook che abbia tutti i requisiti che ti occorrono (nel tuo caso mi pare di capire esclusivamente la firma e l'immagine)

Per farlo, nel caso ti occorra, puoi seguire la dettagliata guida di Roberto: Come fare a creare un Modello (Template). Salva il modello nella stessa cartella del foglio excel (va bene anche una cartella diversa purchè poi adegui il percoso nel codice che segue) con il nome ModelloMail.oft (anche per il nome vale la stessa indicazione del percorso)

A questo punto utilizza il seguente:


Private Sub CommandButton1_Click()

    Dim myOutlook As Object

    Dim myMailItem As Object

    Dim risp As Integer

    Const accapo As String = "<BR>"

    Dim variabileEmailDelDestinatario As String

    Dim riga As Long

    Dim fName As String

    risp = MsgBox("VUOI  INVIARE  LE  @  CON  O  SENZA  GLI  SCADUTI ???" _

           , vbYesNoCancel + vbQuestion, "NON AGGIORNARE MAI IL LUNEDI'  (SI = CON  /  NO = SENZA)")

    If risp = vbYes Then 'se rispondo SI alla prima finestra

        risp = MsgBox("AGGIORNATI  SCADUTI ,  DATA DECORRENZA  e  NOTIFICA @ ???" _

            , vbOKCancel + vbQuestion, "Vuoi Inviare le Quotazioni?")

        If risp = vbOK Then  'se rispondo SI alla seconda finestra

            Set myOutlook = CreateObject("Outlook.Application")

            'fName = ActiveWorkbook.Path & "" & ActiveWorkbook.Name

            fName = ActiveWorkbook.FullName

            riga = 6

            While (riga <= 7)  'modificare il numero fino alla riga che si intende inviare

                variabileEmailDelDestinatario = Foglio1.Cells(riga, 20)

                'Set myMailItem = myOutlook.CreateItem(0)    'olMailItem

                Set myMailItem = myOutlook.CreateItemFromTemplate(ActiveWorkbook.Path _                    & "\ModelloMail.oft")                With myMailItem

                    .To = variabileEmailDelDestinatario

                    .Subject = "Quotazioni per il " & Date + 1 '& " e " & Date + 3

                    .BodyFormat = 2 'olFormatHTML

                    If Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = tuo messaggio & .HTMLBody

                    ElseIf Trim(Foglio1.Cells(riga, 23)) = "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = tuo messaggio & .HTMLBody

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) <= 0 Then

                        .HTMLBody = tuo messaggio & .HTMLBody

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" Then

                         .HTMLBody = tuo messaggio & .HTMLBody

                    Else

                         .HTMLBody = tuo messaggio & .HTMLBody

                    End If

                    .Send

                End With

                riga = riga + 1

            Wend

            Set myOutlook = Nothing

            Set myMailItem = Nothing

        Else

            MsgBox "Ho risposto ANNULLA alla seconda finestra"

        End If

    ElseIf risp = vbNo Then

        'se rispondo NO alla prima finestra

        risp = MsgBox("AGGIORNATI  DATA DECORRENZA  e  NOTIFICA @ ???" _

            , vbOKCancel + vbQuestion, "Vuoi Inviare le Quotazioni?")

        If risp = vbOK Then  'se rispondo di nuovo SI alla seconda finestra

            Set myOutlook = CreateObject("Outlook.Application")

            'fName = ActiveWorkbook.Path & "" & ActiveWorkbook.Name

            fName = ActiveWorkbook.FullName

            riga = 6

            While (riga <= 7)  'modificare il numero fino alla riga che si intende inviare

                variabileEmailDelDestinatario = Foglio1.Cells(riga, 20)

                'Set myMailItem = myOutlook.CreateItem(0)    'olMailItem

Set myMailItem = myOutlook.CreateItemFromTemplate(ActiveWorkbook.Path _                    & "\ModelloMail.oft")                With myMailItem

                    .To = variabileEmailDelDestinatario

                    .Subject = "Quotazioni per il " & Date + 1 '& " e " & Date + 3

                    .BodyFormat = 2 'olFormatHTML

                    If Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = tuo messaggio & .HTMLBody

                    ElseIf Trim(Foglio1.Cells(riga, 23)) = "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = tuo messaggio & .HTMLBody

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) <= 0 Then

                        .HTMLBody = tuo messaggio & .HTMLBody

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" Then

                         .HTMLBody = tuo messaggio & .HTMLBody

                    Else

                         .HTMLBody = tuo messaggio & .HTMLBody

                    End If

                    .Send

                End With

                riga = riga + 1

            Wend

            Set myOutlook = Nothing

            Set myMailItem = Nothing

        Else

            MsgBox "Ho risposto ANNULLA alla seconda finestra"

        End If

    Else

        MsgBox "Ho risposto ANNULLA alla prima finestra"

    End If

End Sub


Ho evidenziato le parti modificate/aggiunte, in particolare fai attenzione al "& .HTMLBody" che ho inserito quando componi il corpo della mail e alla modifica e spostamento di posizione dell'assegnazione "Set myMailItem = ...."

Ti rinnovo quindi la raccomandazione di utilizzare questo codice, inserendo le parti che ho omesso (il corpo della mail).

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-17T10:40:51+00:00

Ciao Paolo,

non ti preoccupare, ho un paio di tir di pazienza da parte e altri ne ho ordinati!!! :-P

Purtroppo "non và" non mi aiuta a capire cosa e perchè.

Combinando i due post quello che dovresti ottenere è questo:

  • prima msgbox "SI-NO-Annulla"
  • se rispondi SI allora seconda msgbox "OK-Annulla" con richiesta MsgBox("AGGIORNATI  SCADUTI ,  DATA DECORRENZA  e  NOTIFICA @ ???"
  • se rispondi OK allora componi la mail
  • se rispondi NO (alla prima msgbox) allora seconda msgbox "OK-Annulla" con richiesta MsgBox("AGGIORNATI  DATA DECORRENZA  e  NOTIFICA @ ???"
  • se rispondi OK allora componi la mail

Altrimenti mi devi descrivere esattamente cosa vuoi che accada alla pressione di ognuno dei tasti della prima e della seconda msgbox ad esempio

1 si --> 2 si           --> mail?

1 si --> 2 annulla   --> esco senza fare nulla?

1 no --> 2 si         --> mail?

1 no --> 2 annulla --> esco senza fare nulla?

1 annulla               --> esco senza fare nulla?

Se puoi vuoi condividere il file non ci sono problemi, tuttavia serve comunque che tu descriva il processo che vuoi ottenere

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-17T09:19:19+00:00

Sostituisci


ElseIf risp = vbNo Then        MsgBox "Ho risposto NO alla prima finestra"    Else        MsgBox "Ho risposto ANNULLA alla prima finestra"    End If

---

con

---

    ElseIf risp = vbNo Then

        'se rispondo NO alla prima finestra

        risp = MsgBox("AGGIORNATI  DATA DECORRENZA  e  NOTIFICA @ ???" _

            , vbOKCancel + vbQuestion, "Vuoi Inviare le Quotazioni?")

        If risp = vbOK Then  'se rispondo di nuovo SI alla seconda finestra

            Set myOutlook = CreateObject("Outlook.Application")

            Set myMailItem = myOutlook.CreateItem(0)    'olMailItem

            'fName = ActiveWorkbook.Path & "" & ActiveWorkbook.Name

            fName = ActiveWorkbook.FullName

            riga = 6

            While (riga <= 7)  'modificare il numero fino alla riga che si intende inviare

                variabileEmailDelDestinatario = Foglio1.Cells(riga, 20)

                With myMailItem

                    .To = variabileEmailDelDestinatario

                    .Subject = "Quotazioni per il " & Date + 1 '& " e " & Date + 3

                    If Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = ""

                    ElseIf Trim(Foglio1.Cells(riga, 23)) = "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = ""

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) <= 0 Then

                        .HTMLBody = ""

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" Then

                         .HTMLBody = ""

                    Else

                         .HTMLBody = ""

                    End If

                    .Send

                End With

                riga = riga + 1

            Wend

            Set myOutlook = Nothing

            Set myMailItem = Nothing

        Else

            MsgBox "Ho risposto ANNULLA alla seconda finestra"

        End If

    Else

        MsgBox "Ho risposto ANNULLA alla prima finestra"

    End If


tieni conto che non conosco esattamente il tuo contesto, quindi mi sono limitato a ricopiare il codice per la creazione della mail che avevi utilizzato nel caso di risposta SI alla prima msgbox. Aggiustalo di conseguenza

David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-01-16T21:51:28+00:00

Ciao Paolo,

prova così (ho eliminato il contenuto di HTMLBody per brevità e perchè è ininfluente ai fini del problema, ovviamente reinseriscilo opportunamente)


Private Sub CommandButton1_Click()

    Dim myOutlook As Object

    Dim myMailItem As Object

    Dim risp As Integer

    Const accapo As String = "<BR>"

    Dim variabileEmailDelDestinatario As String

    Dim riga As Long

    Dim fName As String

    risp = MsgBox("VUOI  INVIARE  LE  @  CON  O  SENZA  GLI  SCADUTI ???" _

           , vbYesNoCancel + vbQuestion, "NON AGGIORNARE MAI IL LUNEDI'  (SI = CON  /  NO = SENZA)")

    If risp = vbYes Then 'se rispondo SI alla prima finestra

        risp = MsgBox("AGGIORNATI  SCADUTI ,  DATA DECORRENZA  e  NOTIFICA @ ???" _

            , vbOKCancel + vbQuestion, "Vuoi Inviare le Quotazioni?")

        If risp = vbOK Then  'se rispondo SI alla seconda finestra

            Set myOutlook = CreateObject("Outlook.Application")

            Set myMailItem = myOutlook.CreateItem(0)    'olMailItem

'fName = ActiveWorkbook.Path & "" & ActiveWorkbook.Name            fName = ActiveWorkbook.FullName

            riga = 6

            While (riga <= 7)  'modificare il numero fino alla riga che si intende inviare

                variabileEmailDelDestinatario = Foglio1.Cells(riga, 20)

                With myMailItem

                    .To = variabileEmailDelDestinatario

                    .Subject = "Quotazioni per il " & Date + 1 '& " e " & Date + 3

                    .BodyFormat = 2 'olFormatHTML

                    If Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = ""

                    ElseIf Trim(Foglio1.Cells(riga, 23)) = "" And Trim(Foglio1.Cells(riga, 27)) > 0 Then

                        .HTMLBody = ""

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" And Trim(Foglio1.Cells(riga, 27)) <= 0 Then

                        .HTMLBody = ""

                    ElseIf Trim(Foglio1.Cells(riga, 23)) <> "" Then

                         .HTMLBody = ""

                    Else

                         .HTMLBody = ""

                    End If

                    .Send

                End With

                riga = riga + 1

            Wend

            Set myOutlook = Nothing

            Set myMailItem = Nothing

        Else

            MsgBox "Ho risposto ANNULLA alla seconda finestra"

        End If

    ElseIf risp = vbNo Then

        MsgBox "Ho risposto NO alla prima finestra"

    Else

        MsgBox "Ho risposto ANNULLA alla prima finestra"

    End If

End Sub


Fai attenzione inoltre che, il codice che hai postato contiene diverse inesattezze: variabili dichiarate e non utilizzate (myOutlook e myMailItem) e variabili utilizzate ma non dichiarate (otlApp e otlNewMail), variabili apparentemente inutili (fName che ti ho indicato in grassetto) .... ti consiglierei quindi, se soddisfa le tue esigenze, di ripartire dal codice che ti ho scritto.

David

La risposta è stata utile?

0 commenti Nessun commento

98 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-03-22T07:43:08+00:00

    Ciao Paolo,

    permettimi di dirti che sarebbe opportuno che tu investissi del tempo per capire esattamente cosa fa il tuo codice. In assenza di questo "salto in avanti" sarai sempre dipendente da qualcun altro per le eventuali modifiche.

    Detto questo, quiho condiviso una nuova versione del file che, dalle mie prove, sembra risolvere il problema. 

    David

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento