|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
[EXCEL] Invio e-mail
Ho la necessità di inviare un foglio di Excel o anche solo parte del suo contenuto tramite e-mail, ma fin'ora sono riuscito, col metodo "SendMail" ad inviare l'intero documento.
Sapete dirmi come si fa ad inviare solo un foglio o una selezione? Grazie!
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
UP!
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2005
Città: Sardigna
Messaggi: 11505
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
Si, lo so che si possono zippare i file, ma il mio problema è che ho inviato un listino ad alcuni clienti ed in questo listino c'è un modulo per fare i preventivi ed eventualmente inviare gli ordini.
Io vorrei fare in modo che semplicemente cliccando su un pulsante, la pagina relativa al preventivo venga inviata via e-mail come ordine. Purtroppo fin'ora riesco solamente a fare in modo che venga inviato tutto il documento Excel che a causa del listino con oltre 15.000 articoli supera i 2 MByte. Il cliente potrebbe sempre stampare la pagina ed inviarla via fax, ma io verrei fare in modo che la procedura fosse un po' più pratica e veloce.
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jul 2005
Città: Sardigna
Messaggi: 11505
|
Quote:
|
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
No ragazzi, grazie per l'impegno, ma non ci siamo. Se avete letto il mio terzo post, avrete compreso che la e-mail non devo inviarla io, ma bensì i miei clienti e non posso di certo pretendere che ognuno di loro sappia come si fa a zippare un file, anche perché sarebbe comunque una procedura un po' macchinosa, soprattutto per alcuni.
Vi riassumo tutta la storia: Ho creato un cartella di lavoro chiamata LISTINO.XLS che contiene due fogli distiniti, uno chiamato ARTICOLI e l'altro chiamato PREVENTIVI. Nel foglio ARTICOLI sono contenute circa 15.000 righe con codici, descrizioni, prezzi e sconti, mentre nel foglio PREVENTIVI, c'è un modulo che permette ai clienti di inserire codici e quantità ed avere in automatico i totali, gli sconti, l'IVA etc... Naturalmente, una volta creato il preventivo, può essere che il cliente decida di inoltrare l'ordine e purtroppo al momento, l'unico metodo che può utilizzare e stampare il foglio ed inviarlo via fax. Qualcuno dei miei clienti ha pensato di salvare la cartella intera e rispedirmela via e-mail, ma come ho già detto, le dimensioni sono un po' troppo grandi, soprattutto quando mi trovo a dover scaricare la posta con collegamenti lenti. Purtroppo i clienti non possono nemmeno fare il copia incolla delle celle perché per motivi di riservatezza le ho bloccate con la password e le uniche che sono sbloccate sono quelle relative a quantità e codici. Come posso fare?
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
UP!
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
Ancora UP!!!
E' più difficile di quanto pensavo o sarà la bella stagione che ci atrofizza i cervelli? A parte gli scherzi, se c'è qualcuno che ci capisce di brutto col VBA di Excel, si faccia vivo per favore!
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jul 2004
Messaggi: 1364
|
Usa questo codice per la macro.
L'utente dovrà posizionarsi nello sheet da inviare (il preventivo) e lanciare la macro. Sostituisci nome.cognome@provider.it con il tuo indirizzo mail. Sub Mail_ActiveSheet() ' Works in Excel 97 through Excel 2007. Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook ' Using ActiveSheet.Copy creates a new workbook with ' the sheet and the file format is the same as the ' original workbook. ' Copy the worksheet to a new workbook. ActiveSheet.Copy Set Destwb = ActiveWorkbook ' Determine the Excel version and file extension/format. With Destwb If Val(Application.Version) < 12 Then ' You are using Excel 97-2003. FileExtStr = ".xls": FileFormatNum = -4143 Else ' You are using Excel 2007. ' When you use ActiveSheet.Copy to create a workbook, ' you are prompted with a security dialog. If you click No ' in the dialog, then the name of Sourcewb is the same ' as Destwb and you exit the subroutine. You only see this ' dialog when you attempt to copy a worksheet from an .xlsm file with macros disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is No in the security dialog." Exit Sub Else Select Case Sourcewb.FileFormat ' Code 51 represents the enumeration for a macro-free ' Excel 2007 Workbook (.xlsx). Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 ' Code 52 represents the enumeration for a ' macro-enabled Excel 2007 Workbook (.xlsm). Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If ' Code 56 represents the enumeration for a ' a legacy Excel 97-2003 Workbook (.xls). Case 56: FileExtStr = ".xls": FileFormatNum = 56 ' Code 50 represents the enumeration for a ' binary Excel 2007 Workbook (.xlsb). Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With ' Change all cells in the worksheet to values, if desired. '' With Destwb.Sheets(1).UsedRange '' .Cells.Copy '' .Cells.PasteSpecial xlPasteValues '' .Cells(1).Select '' End With ''Application.CutCopyMode = False 'Save the new workbook and then mail it. TempFilePath = Environ$("temp") & "\" TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss") With Destwb .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum On Error Resume Next .SendMail "nome.cognome@provider.it", _ "This is the Subject line." On Error GoTo 0 .Close SaveChanges:=False End With ' Delete the file you just sent. Kill TempFilePath & TempFileName & FileExtStr With Application .ScreenUpdating = True .EnableEvents = True End With End Sub |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
AZZ!!!!
Non ho ancora avuto modo di provare il tuo codice, ma grazie lo stesso Alby! di certo non ti è mancato l'impegno. Ti farò sapere l'esito, non appena avrò tempo di inserire il codice nel mio modulo preventivi. Grazie ancora.
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
Ok, il codice funziona, ma purtroppo il file che viene inviato è sempre molto grande, un po' meno dell'originale, ma comunque circa 1,5 Mb.
Io vorrei che il software facesse in modo di incorporare nel messaggio della mail, soltanto una selezione di celle del foglio di lavoro, mentre col metodo consigliato da Alby, viene inviata comunque una mole di dati superflua. Per me sarebbe sufficiente ricevere una mail anche NON in formato Excel, ma semplicemente una tabella ricopiata dal foglio elettronico, indicante esclusivamente quantità, codici, descrizioni, prezzi e sconti. Si può fare?
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Dec 2001
Messaggi: 452
|
Evvai!!! Sono riuscito ad inviare solo la selezione, ottenendo così un file di pochi Kb.
La ciliegina sulla torta sarebbe riuscire a selezionare ed inviare anche le celle bloccate, ma comunque va già benissimo così. Grazie ancora!
__________________
Blog Lago Trasimeno |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:48.