Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Salvare in PDF

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

Salvare in PDF

Postdi ale42 » 22/08/14 10:59

Ciao a tutti. Sono qui nel chiedere un vostro aiuto in merito ad un mio dubbio, nel salvataggio in PDF.
Preciso che non sono pratica del VBA.
Detto questo, cerco di spiegarmi al meglio sul mio dubbio nel salvataggio dei fogli Excel in formato PDF.
Il codice allegato, esegue:
1- se la cartella non esiste, allora la crea all'interno della cartella dove si trova il file Excel.
2 - salva in pdf tutti i fogli "singoli" presenti nel file Excel, iniziando dal foglio n. 5 fino al penultimo foglio.
3- il nome che avrà ogni file pdf, viene preso concatenando il valore trovato nelle celle B13,H1,C13,H1,F3,G3 del singolo foglio
dandomi ad esempio questo risultato: Cod. Cliente 10 Fattura n.200, Cod. Cliente 11 Fattura n.201 - e così via.
Nella cella H1 ci sono due spazi che serve per separare il nome concatenato.
Questo codice che potete vedere non è stato creato da me, ma è frutto delle ricerche in rete e qualche mia modifica.
Augurandomi di essere stata chiara nel spiegare cosa fa il codice, arrivo al mio dubbio.
Quanndo salvo i file in pdf, i salvataggi vengono eseguiti alla perfezione.
Ciò che ho riscontrato è che la maschera di Excel, diventa bianco per il tempo necessario al salvataggio dei file, poi ritorna normale.
Questo potrebbe crearmi problemi, oppure è normale visto che si stanno salvando in file singoli oltre 100 fogli in pdf?
La mia paura è il fatto se il pc potrebbe andare in crash.
Grazie a tutti.............
by alessia

Codice: Seleziona tutto
   Private Sub CommandButton8_Click()

'Salva in singoli File tutte le fatture "Fogli" presenti nel file Excel.
 'Ti crea una nuova cartella se non c'è, chiamata "Archivio Fatture", all'interno della cartella dove _
  si trova il file originale, salvando tutti i file.
 
 
 Dim salvapdf

salvapdf = MsgBox("Vuoi salvare tutte le Fatture nel formato Pdf ?", vbExclamation + vbYesNo, "ATTENZIONE. Stai per salvare in PDF !!!")
If salvapdf = vbYes Then

Dim objFso As Object
Dim objFolder As Object
Set objFso = CreateObject("Scripting.FileSystemObject")
If objFso.FolderExists(ActiveWorkbook.Path & "\Archivio Fatture\") Then
MsgBox "La cartella Archivio Fatture esiste già...", vbCritical, ("ATTENZIONE !!!")
Else
MsgBox "La cartella ''Archivio Fatture'' non esisteva." & Chr(13) & "Adesso che è stata creata... puoi salvare il file...", vbInformation, ("Nuova Cartella creata con successo... ")
Set objFolder = objFso.CreateFolder(ActiveWorkbook.Path & "\Archivio Fatture\")
End If
Set objFolder = Nothing
Set objFso = Nothing

Dim Variabile As Integer
Variabile = MsgBox("Premi OK per salvare il file...", vbOKCancel + vbExclamation)

If Variabile = 1 Then
Dim foglio As Variant
   
  percorso = ActiveWorkbook.Path & "\Archivio Fatture\"
   
    'Sheets(foglio).Select
   
    Dim strPath As String, strNome As String
Dim i As Long
strPath = ActiveWorkbook.Path & "\Archivio Fatture\"

  For i = 5 To Sheets.Count - 1 ' Selezionare i fogli da salvare in pdf. In questo caso, salva dal foglio 5 fino al penultimo.
    strNome = Sheets(i).Range("b13") 'il file prende il nome contenuto nella cella B13,H1,C13,H1,F3,G3
     strnome2 = Sheets(i).Range("h1")
     strNome3 = Sheets(i).Range("c13")
      strNome4 = Sheets(i).Range("h1") ' in H1 ci sono due spazi per separare il nome del file
     strNome5 = Sheets(i).Range("f3")
     strNome6 = Sheets(i).Range("g3")
    ' nella riga sottostante è specificato il Range da copiare in pdf.
    Sheets(i).Range("A1:i58").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    strPath & strNome & strnome2 & strNome3 & strNome4 & strNome5 & strNome6 & ".pdf", Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
  Next i
 MsgBox "Fatture salvate singolarmente in formato Pdf.", vbInformation, "Fatture salvate!"
 CommandButton8.BackColor = 65535 '<--- Il pulsante si colora di giallo indicandomi così che è stato usato

End If
End If
End Sub   
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Sponsor
 

Re: Salvare in PDF

Postdi ale42 » 22/08/14 11:01

P.s. uso Excel 2010.
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salvare in PDF

Postdi Anthony47 » 22/08/14 11:12

Quello che succede e' normale; inoltre potrebbe anche essere riportato l' errore "Excel non risponde". Quindi non lasciarti impressionare e rilassati sorseggiando il tuo caffe'...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salvare in PDF

Postdi ale42 » 22/08/14 11:20

Grazie Anthony per la tua risposta presisa ed immediata. Mi hai tranquillizzata. Sai... avendo pochissima conoscenza del vba, ho paura di sbagliare.
Come avrai potuto notare qui, trattasi di fatture. Quindi, un argomento molto importante.
Pertanto, se il codice come lo hai visto va bene, sono serena nel poter continuare a lavorare.
Nuovamente grazie per il tuo impegno.
P.s. il caffè lo già preso, anzi, bensì due. Penso che per oggi possano bastare.
Ciao Anthony
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salvare in PDF

Postdi Anthony47 » 22/08/14 11:28

Non ho guardato il contenuto della macro, pero' se funziona lo puoi controllare solo tu...

Mi chiedo pero' perche', se l' argomento e' cosi' importante, le fatture non vengono prodotte volta per volta quando il controllo sull' esito puo' essere piu' facile.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salvare in PDF

Postdi ale42 » 22/08/14 11:37

Se tu dessi un'occhiata alla mia macro, sarei più tranquilla. Questo è il motivo perchè mi sono rivolta a voi esperti.
Ti spiego: io ho ad esempio n.100 Fatture, ogni mese devo solo cambiare la data di Emissione Fattura, Numero di Fattura e il periodo di Fatturazione.
I dati all'interno sono sempre uguali, tranne se ci sono degli adegamenti, modifiche ecc...
Quindi, ogni mese ho il bisogno di salvare tutti i fogli " che sono Fatture" in File singoli Pdf.
Il motivo dei file singoli è ad esempio: inviare al cliente la Fattura via E-email, oppure nelle lettere di sollecito allego nuovamente la Fattura in Pdf, ed in più un archivio fatture da conservare.
Grazie
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salvare in PDF

Postdi Anthony47 » 22/08/14 12:24

La macro prende comincia dal foglio N. 5 del file attivo e ne salva il range "A1:I58" in formato pdf, fermandosi al penultimo foglio; il nome viene calcolato concatenando i dati in B13, C3, F3, G3; la directory viene inserita nello stesso percorso in cui si trova il file. Il codice mi pare abbastanza semplice, non dovrebbero esserci sorprese (purche' il foglio di inizio sia sempre il 5° e ci si debba fermare sul penultimo; cosa che puo' andare in crisi se si tolgono, spostano o aggiungono fogli).

L' uso di H1 per inserire gli spazi lo puoi benissimo sostituire inserendo i caratteri direttamente nel vba, tipo
Codice: Seleziona tutto
strPath & strNome & "_" & strNome3 & "_" & strNome5 & strNome6    'ho separato con "_"


Personalmente invece di inserirmi nel percorso del file attivo avrei usato una directory fissa, tipo
Codice: Seleziona tutto
strPath = "C:\Archivio Fatture\"
Ovviamente cancellando tutta la prima parte della macro (da Dim objFso As Object a Set objFso = Nothing), che e' quella piu' complessa.

Sei sicura che il nome file non conterra' mai caratteri proibiti (\ / : * ? "< > |)? Hai gia' un metodo per essere certa di non avere mai nome file duplicati?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salvare in PDF

Postdi ale42 » 22/08/14 12:39

Faccio delle prove e appena sono certa ti rispondo...
Grazie 1000
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salvare in PDF

Postdi ale42 » 22/08/14 13:37

Rispondo alle tue domande.

---> il codice mi pare abbastanza semplice, non dovrebbero esserci sorprese (purche' il file di inizio sia sempre il 5° e ci si debba fermare sul penultimo; cosa che puo' andare in crisi se si tolgono, spostano o aggiungono fogli).
Risp....Quando si aggiungono nuovi fogli " Fatture" oppure si tolgono, per come è impostato il programma, rimangono sempre i primi 5 fogli che sono dati, nonchè l'ultimo. Quindi questo problema non esiste.

--->L' uso di H1 per inserire gli spazi lo puoi benissimo sostituire inserendo i caratteri direttamente nel vba, tipo
strNome & "_" & strNome3 & "_" & strNome5 & strNome6 'ho separato con "_"
Risp..... Ho seguito il tuo consiglio eliminando il trattino ed inserendo uno spazio. Oggi, grazie a te, Ho imparato qualcosa di nuovo. Devo dirti che ho notato un miglioramento nella velocità di salvare i file Pdf.

-----> Personalmente invece di inserirmi nel percorso del file attivo avrei usato una directory fissa, tipo
Codice: Seleziona tuttostrPath = "C:\Archivio Fatture\"
Ovviamente cancellando tutta la prima parte della macro (da Dim objFso As Object a Set objFso = Nothing), che e' quella piu' complessa.
Risp...... Ho preferito così per il motivo di avere tutti i dati in un'unica cartella.

-----> Sei sicura che il nome file non conterra' mai caratteri proibiti (\ / : * ? "< > |)? Hai gia' un metodo per essere certa di non avere mai nome file duplicati?
Risp..... Il metodo che uso non possono esserci caratteri proibiti (\ / : * ? "< > |)? oppure, duplicati, in quanto ad ogni cliente viene assegnato un codice cliente es. 10 da un'altro programma ( Rubrica) che assegna in automatico il codice cliente. Quindi, non possono esserci duplicati ne caratteri.
La Fattura è così composta:
nella cella B13 di tutte le fatture ho un valore Fisso " Cod. Cliente"
nella cella C13 ho il numero es. 10 che è lo stesso nome del foglio "fattura". Chiaramente questo dato è un valore fisso.
nella cella F3 di tutte le fatture ho un valore Fisso "Fattura N."
nella cella G3 ho il numero di Fattura che ho assegnato esempio 150. Chiaramente questo dato non è un valore fisso ma soggetto a cambiamento.
Quindi, quando vado a salvare i file in pdf, i nomi dei file vengono così:
es. Cod. Cliente 10 Fattura N. 150
es.2 Cod. Cliente 11 Fattura N. 151
es.3 Cod Cliente 12 Fattura N. 152
e così via
L'unico problema che ho potuto riscontrare, che se dovessi aggiungere la cella es. i3 che contiene una data" 01/08/2014" quest'ultimo mi va in errore debug. Come mai?
Grazie
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18


Torna a Applicazioni Office Windows


Topic correlati a "Salvare in PDF":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti