Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

creare csv definito ed inviarlo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

creare csv definito ed inviarlo

Postdi BG66 » 07/06/20 06:55

Ciao a tutti,
spero stiate bene!!
Al momento da excel creo email in thunderbird limitato e con un allegato con percorso "manuale".
Vorrei invece:
1) creare un csv contenente i soli dati presenti nel range (C22:E40) ed in alternativa un pdf
2) scrivere il percorso dove è stato salvato il file del punto precedente (sempre e solo una tipologia -> csv o pdf) nella cella L38
Cosi da poter compilare in automatico l'email con thunderbird con questo script:
Codice: Seleziona tutto
Sub Invia_thunderbird()
       Dim invia, dest, Ogg, testo, dati As String
       
    dest = Range("=D_day!L35").Value
    Ogg = Range("=D_day!L36").Value

    text1 = Range("=D_day!L37").Value
    testo = text1
   
    allegato = Range("=D_day!L38").Value
   
    invia = "C:\PostaElettronica\thunderbird.exe"
    dati = " -compose " & "to=" & dest & "," & "subject=" & Ogg & "," & "body=" & testo & "," & "attachment=" & allegato
 
Shell invia & dati, vbNormalFocus

End Sub


https://www.dropbox.com/scl/fi/ufmljpvww65zc9vmkdl0v/csv-con-email.xlsm?dl=0&rlkey=706o2ad18n6kg0ciop5ahen95
Grazie per l'aiuto
Gene
STAY SAFE
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 227
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: creare csv definito ed inviarlo

Postdi Anthony47 » 07/06/20 15:28

Aggiungi prima del tuo codice queste istruzioni:
Codice: Seleziona tutto
Dim myArea As String, FilePdf As String, mySh As String
'
myArea = "C22:E40"          '<<< Il range che ti interessa
mySh = "D_day"              '<<< Il Foglio che ti interessa
'
 FilePdf = Range("=D_day!L38").Value
 Sheets(mySh).Range(myArea).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
 FilePdf, Quality:=xlQualityStandard, _
 IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
 False
 Application.Wait (Now + TimeValue("0:00:02"))

Serviranno per creare un file PDF il cui percorso e nome e' preso da D_day!L38 (il nome in L38 deve essere un ".pdf")

Se l'istruzione Sheets(mySh).Range(myArea).ExportAsFixedFormat ti desse un errore, allora registra una tua macro mentre salvi il file in formato "pdf" e adatta gli argomenti dell'istruzione come da tua registrazione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17108
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare csv definito ed inviarlo

Postdi BG66 » 07/06/20 16:56

Ciao Anthony,
domani effettuo la prova.
Non hai fatto menzione della possibilità di salvare le stesse informazioni come csv. Non è fattibile?

Grazie per l'aiuto
Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 227
Iscritto il: 20/08/16 07:44

Re: creare csv definito ed inviarlo

Postdi Anthony47 » 07/06/20 17:44

Mi sembrava che pdf e csv fossero alternative ambuedue sufficienti, e creare il pdf e' piu' diretto.

Se vuoi il csv userai questo preambolo:
Codice: Seleziona tutto
Dim myArea As String, FileNN As String, mySh As String, deWb As Workbook
'
myArea = "C22:E40"          '<<< Il range che ti interessa
mySh = "D_day"              '<<< Il Foglio che ti interessa

FileNN = Range("=D_day!L38").Value
Set deWb = Workbooks.Add
ThisWorkbook.Sheets(mySh).Range(myArea).Copy
deWb.Sheets(1).Range("a1").PasteSpecial Paste:=xlPasteValues
Application.DisplayAlerts = False
deWb.SaveAs Filename:=FileNN, FileFormat:=xlCSV
Application.DisplayAlerts = True
deWb.Close False
Application.CutCopyMode = False

Tuttavia il csv non visualizzera' correttamente le date (che saranno salvate come numero seriale), quindi se sai che l'area contiene date dovrai convertirle in testo subito dopo la riga che contiene .PasteSpecial
Esempio:
Codice: Seleziona tutto
Cells(yy, xx).Value = Format(Cells(yy, xx).Value, "dd-mmm-yyyy")

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17108
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare csv definito ed inviarlo

Postdi BG66 » 08/06/20 05:31

[RISOLTO]
Grazie Anthony.
E' ovviamente tutto perfetto e funzionante.

Una curiosità "ambientalista" se volessi preimpostare in bianco e nero la stampa del pdf?

Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 227
Iscritto il: 20/08/16 07:44

Re: creare csv definito ed inviarlo

Postdi Anthony47 » 08/06/20 14:08

Se lo vuoi in bianco e nero allora e' meglio che sia gia' creato in bianco e nero... E questo ci porta allo stesso processo che creava il csv:
-si crea un nuovo workbook
-si copia l'area desiderata e si incolla sul nuovo workbook
-si "stampa" il foglio in formato pdf
-si chiude il nuovo workbook

Il codice relativo:
Codice: Seleziona tutto
Dim myArea As String, FileNN As String, mySh As String, deWb As Workbook
'
myArea = "C20:E40"          '<<< Il range che ti interessa
mySh = "D_day"              '<<< Il Foglio che ti interessa

FileNN = Range("=D_day!L38").Value
Set deWb = Workbooks.Add
ThisWorkbook.Sheets(mySh).Range(myArea).Copy
deWb.Sheets(1).Range("a1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Columns("A:F").EntireColumn.AutoFit
Application.CutCopyMode = False
deWb.Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
FileNN, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Application.Wait (Now + TimeValue("0:00:02"))
deWb.Close False

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17108
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare csv definito ed inviarlo

Postdi BG66 » 08/06/20 14:23

Ciao Anthony,
ancora mille grazie.

Alla prossima.
Gene
STAY SAFE.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 227
Iscritto il: 20/08/16 07:44


Torna a Applicazioni Office Windows


Topic correlati a "creare csv definito ed inviarlo":

Creare una partizione
Autore: Gaia.T
Forum: Software Linux
Risposte: 1

Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti