Se vuoi usare il nuovo schema di macro, integrandolo con il contenuto di un'area del tuo foglio, devi continuare la compilazione della variabile "strbody". Ad esempio:
- Codice: Seleziona tutto
'Definisci l'area da copiare nella mail:
r2Body = "A2:C5" 'ipotesi: A= descrizione, B=Valore, C=Data
'Preambolo:
strBody = "Buongiorno," & vbCrLf & "Come anticipato telefonicamente comunico non so che cosa:" & vbCrLf
'
'Calcolo max lunghezza di colonna A e colonna B
For I = 1 To Range(r2Body).Rows.Count
If Len(Range(r2Body).Cells(I, 1)) > MaxA Then MaxA = Len(Range(r2Body).Cells(I, 1))
If Len(Range(r2Body).Cells(I, 2)) > maxb Then maxb = Len(Int(Range(r2Body).Cells(I, 2)))
Next I
'
'Inserimento contenuto A (testo), B (valore), C (data)
For I = 1 To Range(r2Body).Rows.Count
strBody = strBody & Range(r2Body).Cells(I, 1).Value & String(2 + MaxA - Len(Range(r2Body).Cells(I, 1).Value), " ")
strBody = strBody & String(2 + maxb - Len(Int(Range(r2Body).Cells(I, 2))), " ") & Format(Range(r2Body).Cells(I, 2).Value, "0.00")
strBody = strBody & " " & Format(Range(r2Body).Cells(I, 3), "dd-mmm-yyyy")
strBody = strBody & vbCrLf
Next I
'
'Saluti finali:
strBody = strBody & vbCrLf & "In attesa di non so cosa invio cordiali saluti"
strBody = strBody & vbCrLf & "Il suo Making"
La complicazione nasce se si vuole formattare i contenuti delle celle per renderli piu' facilmente leggibili, ed e' quello che fanno i primi due cicli For I= 1 / Next I
a) il primo ciclo calcola la lunghezza massima dei testi di colonna A e dei numeri di colonna B
b) il secondo ciclo inserisce nel testo i valori delle celle formattandoli appropriatamente:
-Campi stringa vengono resi della stessa lunghezza
-idem per i campi numerici, che vengono inoltre formattati con 2 decimali
-le date vengono formattate come gg-mmm-aaaa
Ovviamente e' solo un esempio, basato su quanto ipotizzato in testa:
- Colonna A= descrizione testuale, B=Valore numerico, C=Data
Se l'intervallo da inserire nel testo fosse piu' variegato e comunque non riuscissi ad adattare il codice precedente allora secondo me e' molto piu' semplice, rimanendo su questo secondo schema di macro, inviare una mail formattata e usare la Function RangePublish (ad esempio vedi
viewtopic.php?f=26&t=101351#p586218) che consente di riportare nel testo della mail esattamente il contenuto del range.
Ma ne parleremo eventualmente se ce ne sara' bisogno.
Ciao