Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro VBA per inviare via mail una parte di un foglio di lavoro

1,311 views
Skip to first unread message

Patty

unread,
Jul 28, 2010, 3:21:28 PM7/28/10
to
Buongiorno a tutti,
sono nuova del newsgroup e scrivevo per chiedervi un aiuto relativamente
ad una macro che ho realizzato prendendo spunto da quanto ho trovato sul
sito di Ron de Bruin, adattandola poi alle mie esigenze. Lo scopo è
quello di inviare a diversi destinatari email la rispettiva parte di
competenza di un foglio di lavoro excel. Quello che ottengo ora è che
ciascun destinatario riceve la parte filtrata del file con i dati che lo
riguardano con in più solo la riga (la 5) contenente l'intestazione
della colonna filtrata. Ciò che mi servirebbe è però che ciascuno
ricevesse anche le prime 4 righe del foglio di lavoro contenenti delle
informazioni indispensabili per interpretare le righe successive. (è
quello che faccio ora impostando un filtro automatico sulla colonna
fornitore e inviando manualmente via email il file filtrato).
Per chiarezza ho postato a questo link il file al quale sto lavorando
contenente la macro (invia mail ai fornitori).
http://dl.dropbox.com/u/2267887/template%205%20web.xls
Sapete indicarmi un modo per modificare la macro in maniera tale da
avere sempre le prime 4 righe incluse, oltre ai dati filtrati per fornitore?

Scossa

unread,
Jul 28, 2010, 4:00:36 PM7/28/10
to
On 28 Lug, 21:21, Patty <patt...@fastwebnet.it> wrote:
> Buongiorno a tutti,
> sono nuova del newsgroup e scrivevo per chiedervi un aiuto relativamente
> ad una macro che ho realizzato prendendo spunto da quanto ho trovato sul
> sito di Ron de Bruin, adattandola poi alle mie esigenze. Lo scopo è
> Sapete indicarmi un modo per modificare la macro in maniera tale da
> avere sempre le prime 4 righe incluse, oltre ai dati filtrati per fornitore?

prova a sostituire questa parte di codice:

rng.Copy
With NewWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With

con questa:

Ash.Range("1:4").Copy
With NewWB.Sheets(1)
.Cells(1, 1).PasteSpecial Paste:=8
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
.Cells(1, 1).Select
Application.CutCopyMode = False
End With

rng.Copy
With NewWB.Sheets(1)
.Cells(5, 1).PasteSpecial Paste:=8
.Cells(5, 1).PasteSpecial Paste:=xlPasteValues
.Cells(5, 1).PasteSpecial Paste:=xlPasteFormats
.Cells(5, 1).Select
Application.CutCopyMode = False
End With


Fai sapere se hai risolto, grazie.

Bye!
Scossa

Patty

unread,
Jul 29, 2010, 11:44:57 AM7/29/10
to
Grazie mille Scossa!
Questa modifica ha risolto il problema alla grande. Mi rimane solo una
questione irrisolta per ottenere il risultato perfetto: inviare ciascuna
email a più di un destinatario. Attualmente la macro prende l'indirizzo
mail del destinatario dalla sola colonna B del foglio maillist, in
realtà mi servirebbe che l'allegato venisse inviato a un numero X di
destinatari, posti sulle rispettive colonne B, C, D, ... n.
In poche parole dovrei implementare (credo) un ciclo che crei un array
di destinatari (ora il destinatario è uno solo, quindi una stringa),
cercando tutti gli indirizzi email presenti sulla riga corrispondente,
siano essi 1, 2, 3 o 4...
Ho provato in diversi modi, anche inserendo tutti i destinatari in un
unica cella separandoli dalla "," o dal ";", ma la cosa proprio non mi
riesce. Hai qualche idea in merito?
Ancora grazie mille :))


Il 28/07/10 22.00, Scossa ha scritto:

Drago

unread,
Jul 29, 2010, 12:30:53 PM7/29/10
to
aggiungi altri indirizzi mail separari dal ; nella cella dalla quale peschi
l'indirizzo mail
ciao

"Patty" <pat...@fastwebnet.it> ha scritto nel messaggio
news:9mh4o.218296$813....@tornado.fastwebnet.it...

Scossa

unread,
Jul 29, 2010, 2:50:07 PM7/29/10
to
On 29 Lug, 17:44, Patty <patt...@fastwebnet.it> wrote:
> Grazie mille Scossa!
> Questa modifica ha risolto il problema alla grande.

Ottimo, grazie per il riscontro.

> Mi rimane solo una
> questione irrisolta per ottenere il risultato perfetto: inviare ciascuna
> email a più di un destinatario. Attualmente la macro prende l'indirizzo
> mail del destinatario dalla sola colonna B del foglio maillist, in
> realtà mi servirebbe che l'allegato venisse inviato a un numero X di
> destinatari, posti sulle rispettive colonne B, C, D, ... n.


aL volo, DA TESTARE, sostituisci questa parte di codice:

If Rcount >= 2 Then
For Rnum = 2 To Rcount

'Look for the mail address in the MailInfo worksheet
mailAddress = ""
On Error Resume Next
mailAddress = Application.WorksheetFunction. _
VLookup(Cws.Cells(Rnum, 1).Value, _
Worksheets("Mailinfo").Range("A1:B"
& _

Worksheets("Mailinfo").Rows.Count), 2, False)
On Error GoTo 0

If mailAddress <> "" Then

con questa:

If Rcount >= 2 Then
For Rnum = 2 To Rcount
mailAddress = ""
Set RngSrc = Worksheets("Mailinfo").Range("A1:B" & _

Worksheets("Mailinfo").Rows.Count)
With RngSrc
Set RngAdd = .Find(what:=Cws.Cells(Rnum, 1).Value, _
After:=.Cells(1, 1), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, MatchCase:=False)
End With
'Look for the mail address in the MailInfo worksheet
If Not RngAdd Is Nothing Then
With RngAdd
Do
nOff = nOff + 1
sAdd = .Offset(0, nOff).Value
mailAddress = mailAddress & sAdd & ";"
Loop While .Offset(0, nOff + 1).Value <> ""
End With
End If


If mailAddress <> "" Then


Ricordati di aggiungere alle altre queste dichiarazioni delle
variabili:

Dim RngAdd As Range
Dim RngSrc As Range
Dim nOff As Long
Dim sAdd As String

Patty

unread,
Jul 30, 2010, 2:12:51 PM7/30/10
to
Purtroppo così non funziona proprio: non manda la mail a nessuno!
Ci deve essere qualcosa di sbagliato... :(


Il 29/07/10 20.50, Scossa ha scritto:

Scossa

unread,
Jul 30, 2010, 2:29:32 PM7/30/10
to
On 30 Lug, 20:12, Patty <patt...@fastwebnet.it> wrote:
> Purtroppo così non funziona proprio: non manda la mail a nessuno!
> Ci deve essere qualcosa di sbagliato... :(

Puoi ridepositare il file col codice modificato?

Bye!
Scossa

Patty

unread,
Aug 1, 2010, 12:56:33 PM8/1/10
to
Purtroppo fino a domani sera non posso ricaricare il file modificato,
l'ho dimenticato in ufficio! :) Comunque il comportamento della macro è
strano: appare per 4 volte l'avviso che una macro sta tentando di
inviare una mail, io confermo con ok, ma in posta in uscita/inviata non
appare nulla. Il codice l'ho modificato proprio come da tuo
suggerimento, ho incluso anche le dichiarazioni delle variabili
all'inizio, ma nulla... Ci deve essere qualche errore nella sintassi.
Può dipendere dalla versione di office? (a lavoro uso la 2003).
Intanto comunque grazie ancora per l'aiuto che mi hai dato fin'ora!


Il 30/07/10 20.12, Patty ha scritto:

Scossa

unread,
Aug 1, 2010, 1:52:08 PM8/1/10
to
On 1 Ago, 18:56, Patty <patt...@fastwebnet.it> wrote:
> Purtroppo fino a domani sera non posso ricaricare il file modificato,
> l'ho dimenticato in ufficio! :)

Aspettiamo domani sera, comunque qpuoi aggiungere dopo:

If mailAddress <> "" Then

questa riga:

msgbox mailAddress

così vedi se la stringa deggli indirizzi dei destinatari è corretta.

Bye!
Scossa


Patty

unread,
Aug 4, 2010, 3:49:06 PM8/4/10
to
Eccomi!
Scusa per il ritardo, sono stata presissima in questi giorni!!!
Ho caricato qui il file modificato con i tuoi suggerimenti per inviare
la mail a più destinatari:
http://dl.dropbox.com/u/2267887/template%206%20web.xls
La macro così proprio non funziona, riesci ad individuare che cosa ho
sbagliato? Appare il messaggio che avvisa che excel sta tentando di
inviare una mail, ma in realtà non succede nulla!!
Se riuscissi a farla funzionare sarebbe perfetto, in caso contrario me
la terrei stretta anche solo con un destinatario alla volta!
Ancora grazie mille

Il 01/08/10 19.52, Scossa ha scritto:

Scossa

unread,
Aug 4, 2010, 5:37:40 PM8/4/10
to
On 4 Ago, 21:49, Patty <patt...@fastwebnet.it> wrote:
> Eccomi!
> Scusa per il ritardo, sono stata presissima in questi giorni!!!
> Ho caricato qui il file modificato con i tuoi suggerimenti per inviare
> la mail a più destinatari:http://dl.dropbox.com/u/2267887/template%206%20web.xls

C'è qualcosa che non va, non riesco a scaricarlo (server error), puoi
ri-depositarlo o depositarlo su un altro server (p.e.: rapidshare.com)

Bye!
Scossa

Patty

unread,
Aug 5, 2010, 11:04:40 AM8/5/10
to
Strano, ho provato da 2 diversi pc e sembra non ci siano problemi a
scaricarlo da dropbox! Comunque l'ho ricaricato per sicurezza anche qui:
http://tinyurl.com/2wl83kk ... Fammi sapere quando lo apri, cosě lo
tolgo dal sito!
Grazie mille per la pazienza!
pattyp

> C'č qualcosa che non va, non riesco a scaricarlo (server error), puoi

Scossa

unread,
Aug 5, 2010, 4:19:51 PM8/5/10
to
On 5 Ago, 17:04, Patty <patt...@fastwebnet.it> wrote:
> scaricarlo da dropbox! Comunque l'ho ricaricato per sicurezza anche qui:http://tinyurl.com/2wl83kk... Fammi sapere quando lo apri, così lo
> tolgo dal sito!

Ciao Patty,

non so perchè non funzioni il metodo .sendmail (non ho ancora
configurato l'account su Outlook), comunque ho fatto un paio di
modifiche:

http://rapidshare.com/files/411264598/template_6_web.xls

provalo.

Altrimenti ho fatto una versione che utilizza i riferimenti a
"Microsoft Outlook 11.0 Object Library" (la attivi dall'editor del VBE
in Strumenti -> Riferimenti, la 11.0 è per Outlook 2003 se 2007
probabilmente è la 12.0) e funziona perfettamente:

http://rapidshare.com/files/411264383/template_7_web.xls

Puoi anche inserire il testo del messagio (.body = "testo del
messaggio") e scegliere se inviare direttamente (.send) o preparare
l'email per l'invio da Outlook (.Display).

Patty

unread,
Aug 6, 2010, 1:20:24 PM8/6/10
to
> comunque ho fatto un paio di
> modifiche:
>
> http://rapidshare.com/files/411264598/template_6_web.xls
>
> provalo.

non ci siamo, continua a non funzionare! pazienza, tanto...

>
> Altrimenti ho fatto una versione che utilizza i riferimenti a
> "Microsoft Outlook 11.0 Object Library" (la attivi dall'editor del VBE
> in Strumenti -> Riferimenti, la 11.0 è per Outlook 2003 se 2007
> probabilmente è la 12.0) e funziona perfettamente:
>
> http://rapidshare.com/files/411264383/template_7_web.xls
>

questa invece funziona, ma ha un comportamento strano: a casa (win xp,
office 2003) non da' problemi. In ufficio le finestre di richiesta di
conferma che appaiono (la prima con l'elenco dei destinatari e la
seconda con la conferma della volontarietà dell'invio) appaiono "dietro"
le rispettive finestre di excel e outlook, obbligandomi a minimizzarle e
a spostarle in continuazione cliccandoci sopra. Le versioni del SO e di
Office sono le stesse, da cosa potrà mai dipendere? Sarebbe bello se la
finestra con i destinatari nemmeno apparisse, ma se proprio deve farlo
almeno che appaia in primo piano e non in background! (certe cose mi
fanno impazzire, ero così contenta che a casa fosse tutto perfetto e
invece ci si mette l'ufficio a darmi i grattacapi!). Mah.

Scossa

unread,
Aug 6, 2010, 2:33:08 PM8/6/10
to
On 6 Ago, 19:20, Patty <patt...@fastwebnet.it> wrote:
> a spostarle in continuazione cliccandoci sopra. Le versioni del SO e di
> Office sono le stesse, da cosa potrà mai dipendere? Sarebbe bello se la
> finestra con i destinatari nemmeno apparisse, ma se proprio deve farlo
> almeno che appaia in primo piano e non in background! (certe cose mi
> fanno impazzire, ero così contenta che a casa fosse tutto perfetto e
> invece ci si mette l'ufficio a darmi i grattacapi!). Mah.

commenta o cancella la riga

MsgBox "a: " & mailAddress

poi aggiungi sotto la riga
.Display

questa riga:
.Application.ActiveInspector.WindowState = olMaximized

alla fine prima di end sub inserisci questa riga:

Excel.Application.WindowState = xlMinimized

Fai sapere, grazie.

Bye!
Scossa

Patty

unread,
Aug 12, 2010, 11:30:34 AM8/12/10
to
Il 06/08/10 20.33, Scossa ha scritto:

> On 6 Ago, 19:20, Patty<patt...@fastwebnet.it> wrote:
>> a spostarle in continuazione cliccandoci sopra.

>


> commenta o cancella la riga
>
> MsgBox "a: "& mailAddress
>

Ecco, mi è bastato fare questo e si è risolto tutto!


>
> Fai sapere, grazie.
>

Ora ho la macro dei miei sogni! Funziona tutto perfettamente!
Ancora grazie mille, senza di te non ce l'avrei mai fatta!

Scossa

unread,
Aug 12, 2010, 12:56:13 PM8/12/10
to
On 12 Ago, 17:30, Patty <patt...@fastwebnet.it> wrote:
>
> Ora ho la macro dei miei sogni! Funziona tutto perfettamente!
> Ancora grazie mille, senza di te non ce l'avrei mai fatta!


Grazie a te per il cortese riscontro :-)

Bye!
Scossa

0 new messages