Condividi:        

[excel2007] Chiudere file excel e 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

[excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 12/10/18 07:10

Ciao a tutti.
Ho bisogno del vostro aiuto.
Ho un foglio excel dove mi faccio le mie fatture.
Il foglio è composto da una parte dove srivo la fattura e un'altra parte in automatico si compilano le fatture,1 2 3 4 5 fogli originale e consulente, che devo stampare in pdf.
Ho impostato le aree di stampa e ora per salvarle in pdf faccio salva con nome metto il nero di pagine da salvare e faccio salva.
Le fatture possono essere composta da 1 sino a 5 fogli e sono in doppia copia, quindi se io scrivo una fattura di 2 fogli il in pdf mi devono usire 4 fogli.
tramite questa macro
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sh As Worksheet
Const cPathSalvataggio As String = "C:\Users\celestino\Desktop\"
Application.DisplayAlerts = False
 With Me
Set sh = .Worksheets("FATTURE")
.SaveAs cPathSalvataggio & sh.Range("E3")
End With
 Application.DisplayAlerts = True
 Set sh = Nothing
End Sub

quando chiudo il foglio ecel mi salva in automatico un nuovo file con il numero fattura che ho in E3.
ora vorrei che che alla chiusura del foglio oltre a continuare a salvarmi questo file mi fsalvi anche in pdf le fatture .
Quindi se devo salvare una fattura di due fogli il pdf mi deve salvare i fogli che vanno da 1 a 4 e quindi si deve attivare quando in una certa cella mi scrive che ho compilato 2 fogli e il nome file deve essere uguale a come me lo salve la macro sopra.
Grazie
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Sponsor
 

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 12/10/18 11:03

ciao ci sone delle correzzioni e vi faccio un esempio:
io scrivo la fattura nel file FATTURE.xlsm nel foglio FATTURE
Nella cella A3 tramite formula concatena vi scrivo in nome del file che sara FATTURA (NUMERO FATTURA) (NOME COMMERCIANTE)
Con la macro che ho adesso come chiudo il file mi esce il file FATTURA 1 Celestino.xlsm
Ora vorrei che ne chiudere il file FATTURE.xlsm mi vengano create due pdf distinti.
uno deve uscire con la scritta FATTURA 1 Celestino.OR.pdf che sono le fatture originali
uno deve uscire con la scritta FATTURA 1 Celestino.CR.pdf che sono le fatture che devo tenere
Nel file FATTURE.xlsm nel foglio FATTURE ho impostato l'area di stampa.
Si possono salvare 10 fogli,5 Originali e 5 da tenere io.
I fogli originali da salvare sono i numeri dispari 1 3 5 7 9
quelli da tenere io sono i numeri pari 2 4 6 8 10
Siccome le fatture che faccio non sono tutte da 5 foglio ma avvolte da 2 o 1,dipende dalla richiesta,
vorrei che quando si dalvano i pdf mi vengano salvati solo i fogli dove c'è scritto qualcosa.
Esempio: fattura di 2 pagine il pdf deve essere solo di quelle due pagine sia quello Originale che quello che devo tenere io.
Spero di essermi spiegato bene.
Grazie
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 12/10/18 21:04

Ciao a tutti.
Forse sono riuscito a trovare quello che volevo con tre macro.
questa macro mi cambia il nome del file in base al numero di fattura e me lo salva in una determinata cartella e poi mi aattiva le macro per salvare in pdf con lo stesso nome file e se la cella x1 è vuota non parte nessuna macro e si chiude il file.
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)

If IsNumeric(Range("x1").Value) = True Then
    Dim sh As Worksheet
    Const cPathSalvataggio As String = "C:\Users\celestino\Desktop\Fatture\"
    Application.DisplayAlerts = False
        With Me
            Set sh = .Worksheets("FATTURE")
            .SaveAs cPathSalvataggio & sh.Range("E3")
        End With
    Application.DisplayAlerts = True
    Set sh = Nothing
SalvaPDFOR
SalvaPDFCO
End If
End Sub

Codice: Seleziona tutto
Sub SalvaPDFCO()
'
'
With ActiveWorkbook
    If .Path = "" Then Exit Sub
    pdfFile = .Path & "\" & Left(.Name, InStr(.Name, ".") - 1) & " CO" & ".pdf"
End With
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFile _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, From:=Range("u12"), To:=Range("v12"), OpenAfterPublish:=False
End Sub

Codice: Seleziona tutto
Sub SalvaPDFOR()
'
'
With ActiveWorkbook
    If .Path = "" Then Exit Sub
    pdfFile = .Path & "\" & Left(.Name, InStr(.Name, ".") - 1) & " OR" & ".pdf"
End With
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFile _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, From:=Range("u11"), To:=Range("v11"), OpenAfterPublish:=False
End Sub

Ai piu esperti chiedo di verificare se è tutto giusto o se devo modificare qualcosa.
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Anthony47 » 13/10/18 00:54

Sinceramente a cercare di capire mi si sono confuse le idee quindi non ti so aiutare a verificare la bonta' di quanto hai alla fine realizzato...

Domande in ordine sparso:
-che senso ha salvare su disco due copie dello stesso file, uno come "...OR.pdf" e l'altro come "...CR.pdf"?
-quale e' la logica per cui "se devo salvare una fattura di due fogli il pdf mi deve salvare i fogli che vanno da 1 a 4"? Da dove si capisce quanti fogli ha la fattura?
-ma quando dici "foglio" alludi a un Foglio Excel o a un foglio di carta?

Comunque, se vuoi stampare su file pdf i fogli del tuo file che hanno un contenuto (almeno 5 celle compilate nelle colonne A:H), puoi usare questa macro:
Codice: Seleziona tutto
Sub StampaFatt()
Const cPathSalvataggio As String = "C:\Users\Percorso|completo\"     '<<< COMPILA COI TUOI DATI
Sheets(1).Select
For I = 2 To ThisWorkbook.Worksheets.Count
    If Application.WorksheetFunction.CountA(Worksheets(I).Range("A:H")) > 5 Then
        Sheets(I).Select False
    End If
Next I
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    cPathSalvataggio & Sheets("FATTURE").Range("E3").Value, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=False
Sheets(1).Select
End Sub

Il percorso di salvataggio e' preso dalla riga marcata <<< (adatta al tuo caso), il nome file da Sheets("FATTURE").Range("E3")

Ovviamente non ho preso in considerazione che i fogli OR sono 1-3-5-7-9 e quelli CR sono 2-4-6-8-10 (visto che non ne ho capito il senso), quindi quanto proposto presuppone di lavorare con un file che ha una struttura diversa da quella che hai ora.

Spero ti dia qualche utile spunto...
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 13/10/18 07:13

ciao Anthony47 e grazie della risposta.
Hai ragione ho fatto un po di confusione.
Ora rispondo alle tue domande.
che senso ha salvare su disco due copie dello stesso file, uno come "...OR.pdf" e l'altro come "...CR.pdf"?

Quando le fatture vengono stampate hanno colori diversi di contorno: BLU per le OR e ROSSE per le CO.
Ti starai chiedendo perche non di un colore unico? Perchè lo trovo piu pratico da consegnare e conservare.
quale e' la logica per cui "se devo salvare una fattura di due fogli il pdf mi deve salvare i fogli che vanno da 1 a 4"?

Le fatture che compilo non sono tutte uguali ma certe volte sono composte da 1,2,3,4 o 5 pagine e di conseguenza avrei 1,2,3,4 o 5 pagine di fatture con il contorno BLU e 1,2,3,4 o 5 fatture di contorno ROSSO.
Comunque nel primo post che ho messo volevo far salvare in un unico pdf sia le rosse che legialle ma poi ho cambiato idea e ho optato per i due pdf.
Da dove si capisce quanti fogli ha la fattura?

Nel range "C21:P190" io compilo la fattura,ma questo range "C21:P190" non viene salvato in pdf.
Ogni pagina di fattura è composto da 34 righe e nel range "C21:P190" sono una dietro l'altra.
In automatico come compilo il range "C21:P190" mi vengono compilate le fatture che dovrei salvare in pdf che si trovano in altri range di celle.
Al completare le righe del primo foglio di fattura si compila la secoda e cosi sino alla quinta.

Per salvare solo le fatture e non tutto il foglio excel ho impostato le are di stampa.
da 1 a 5 sono le fatture BLU e da 6 a 10 le fatture ROSSE

Ora ti spiego cosa fanno le macro.
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If IsNumeric(Range("x1").Value) = True Then
    Dim sh As Worksheet
    Const cPathSalvataggio As String = "C:\Users\celestino\Desktop\Fatture\"
    Application.DisplayAlerts = False
        With Me
            Set sh = .Worksheets("FATTURE")
            .SaveAs cPathSalvataggio & sh.Range("E3")
        End With
    Application.DisplayAlerts = True
    Set sh = Nothing
SalvaPDFOR
SalvaPDFCO
End If
End Sub


Questa macro funziona quando clicco per chiudere il file di excel(.xlsm).
Quando chiudo mi fa una copia del file excel(.xlsm) nella cartella FATTURE con nome file uguale a quello che c'è scritto nella cella E3 dove c'è una formula concatena.
ESEMPIO: il file dove scrivo le fatture è FATTURE.XLSM questa macro me lo salva nella cartella FATTURE in questo modo: Fattur 1 celestino.xlsm.
Il codice
Codice: Seleziona tutto
If IsNumeric(Range("x1").Value) = True Then

quando in X1 non c'è critto nulla non mi fa partire la macro e il file di excel(.xlsm) quando lo chiudo si chiude senza salvarmi nulla.
In X1 ho la somma toale della fattura e se non scrivo nulla nel range "C21:P190" la cella mi resta vuota.

Sempre questa macro mi fa partire le due macro per salvare in pdf: SalvaPDFOR e SalvaPDFCO.
Codice: Seleziona tutto
Sub SalvaPDFCO()
'
'
With ActiveWorkbook
    If .Path = "" Then Exit Sub
    pdfFile = .Path & "\" & Left(.Name, InStr(.Name, ".") - 1) & " CO" & ".pdf"
End With
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFile _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, From:=Range("u12"), To:=Range("v12"), OpenAfterPublish:=False
End Sub

Codice: Seleziona tutto
Sub SalvaPDFOR()
'
'
With ActiveWorkbook
    If .Path = "" Then Exit Sub
    pdfFile = .Path & "\" & Left(.Name, InStr(.Name, ".") - 1) & " OR" & ".pdf"
End With
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFile _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, From:=Range("u11"), To:=Range("v11"), OpenAfterPublish:=False
End Sub

Queste due macro non fanno altro che salvarmi le fatture in pd; una per quelle ROSSE e una per quelle BLU.
Il fail sarebbe cosi: Fattura 1 Celestino CO.pdf e Fattura 1 Celestino.pdf
Codice: Seleziona tutto
From:=Range("u11"), To:=Range("v11"),
From:=Range("u12"), To:=Range("v12"),

le celle U11 e V11 mi dicono quante pagine della fattura mi deve salvare in pdf per le fatture BLU mentre le celle U12 e V12 per quelle ROSSE.
Se io compilo 2 fogli della fattura la prima mi stamperà,( Per salvare solo le fatture e non tutto il foglio excel ho impostato le are di stampa,da 1 a 5 sono le fatture BLU e da 6 a 10 le fatture ROSSE) da 1 a 2 le fatture BLU, mentre l'altra da 6 a 7 le fatture ROSSE.
Spero di aver spiegato tutto.
Quindi le macro che ho nel foglio vanno bene?
Da le prime prove sembra che mi funzionino bene.
Grazie
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Anthony47 » 13/10/18 22:17

Non c'e' nulla meglio delle tue prove per garantire la bonta' delle macro...

Non so cosa ci scrivi in X1; potresti scriverci il numero di pagine e poi calcolare il valore di V11 come U11+X1-1; idem il calcolo di V12 (U12+X1-1).
Potrebbe anche essere piu' logico inserire il tuo codice in una Sub Workbook_BeforeSave (invece che nella Sub Workbook_BeforeClose); in questo modo, quando salvi il file salvi pure le fatture. In questo caso ti dovrebbe bastare aggiungere solo i richiami per stampare le fatture:
Codice: Seleziona tutto
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
If IsNumeric(Range("x1").Value) Then
    SalvaPDFOR
    SalvaPDFCO
End If
End Sub
(in sostituzione dell'attuale Private Sub Workbook_BeforeClose(Cancel As Boolean))

Comunque si tratta di variazioni marginali, forse e' meglio che lasci come e', che sai gia' come funziona.

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

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 14/10/18 13:11

CIAO Anthony47.
Nella cella X1 c'è il valore definale della fattura, quindi se io non compilo la fattura la cella X1 è vuota ("")
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If IsNumeric(Range("x1").Value) = True Then
    Dim sh As Worksheet
    Const cPathSalvataggio As String = "C:\Users\celestino\Desktop\Fatture\"
    Application.DisplayAlerts = False
    With Me
        Set sh = .Worksheets("FATTURE")
        .SaveAs cPathSalvataggio & sh.Range("E3")
     End With
    Application.DisplayAlerts = True
    Set sh = Nothing
    SalvaPDFOR
    SalvaPDFCO
End If
End Sub

Questa macro quando chiudo il file mi salva il file con il numero della fattura e i due pdf,sempre con il numero della fattura, nella cartella FATTURE e quando riapro per fare una nuova fattura la pagina è pulita.
cosi come funziona va benissimo.
Ora per a questa macro vorrei aggiungere il salvataggio.
se clicco per salvare la fattura mi deve fare lo stesso lavoro che fa l'altra macro pero non mi deve pulire la pagina, cosi posso continuare a fare la fattura e quando chiudo il file parte l'altra macro cosi quando riapro per fare una fattura la pagina è pulita.

Sempre questa macro che ho postato se vado in una fattura gia fatta e non modifico il numero posso modifire i dati che quando chiude mi modifica i pdf pure e non mi cancella la pagina.
é possibile aggiungere anche il salvataggio della paggina come vorrei?
Grazie
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi turbonet » 14/10/18 19:16

ciao Cele79;
E possibile avere il tuo modello di fattura in excel. grazie.
turbonet
Utente Junior
 
Post: 16
Iscritto il: 01/04/15 21:24

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Anthony47 » 14/10/18 23:23

Ora per a questa macro vorrei aggiungere il salvataggio.
se clicco per salvare la fattura mi deve fare lo stesso lavoro che fa l'altra macro pero non mi deve pulire la pagina, cosi posso continuare a fare la fattura e quando chiudo il file parte l'altra macro cosi quando riapro per fare una fattura la pagina è pulita.

Sempre questa macro che ho postato se vado in una fattura gia fatta e non modifico il numero posso modifire i dati che quando chiude mi modifica i pdf pure e non mi cancella la pagina.
é possibile aggiungere anche il salvataggio della paggina come vorrei?
Mi sono perso di nuovo...
1) La Private Sub Workbook_BeforeClose al suo interno contiene il SaveAs, cioe' il salvataggio con un nuovo nome (per avere, immagino, il file di partenza sempre pulito) e il salvataggio dei due file pdf; quale salvataggio vorresti quindi aggiungere?
2) Quale e' "l'altra macro" di cui parli?
3) Per la frase "Sempre questa macro che ho postato se vado in una fattura gia fatta e non modifico il numero posso modifire i dati che quando chiude mi modifica i pdf pure e non mi cancella la pagina" non ho capito se il comportamento che descrivi e' una utile prestazione, oppure una cosa che potrebbe succedere malauguratamente e che vorresti cercare di evitare, oppure una domanda
4) Anche l'ultimo "salvataggio della pagina" come vorresti non mi e' chiaro a che cosa corrisponde.

Porta pazienza...
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 15/10/18 06:12

Ciao Antony.
Facciamo il caso che io ho scritto un paio di righe della fattura.
Ora, se clicco l'icona SALVA(maiusc+f12) i dati che ho nella fattura mi restano salvati nella fattura che uso per scriverle,e non mi salva ne file ne pdf, anche se chiudo e riapro il file,mentre se chiudo solo il file,senza fare nessun SALVA, quando lo riapro la pagina e pulita.
Qundo io faccio SALVA,vorrei che mi salvasse il file e i pdf, poter continuare a scrivere la fattura e quando chiudo il file mi aggiorni il file e i pdf gia salvati(come fa ora) e quando la riapro per scrivere una nuova fattura la pagina sia pulita.

Ciao turbonet
Come si fa a metterla?
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Anthony47 » 16/10/18 01:21

Allora secondo me puo' essere utile cambiare leggermente approccio.

Diciamo che il file di partenza per te e' come un "modello", da cui parti per sviluppare la tua fattura lasciando intatto il file modello.

Per prima cosa quindi disabilitiamo i comandi Salva e Chiudi; li sostituiremo tra poco con due pulsanti e relative macro.
Per disabilitare questi due comandi, vai nel "modulo Questa_cartella_di_lavoro" del vba (il modulo in cui hai inserito la Sub Workbook_BeforeClose. Rimuovi quanto presente e inserisci invece
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If EOG = False Then
    MsgBox ("Usare i Pulsanti, per Chiudere o Salvare il file")
    Cancel = True
End If
End Sub


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If EOG = False Then
    MsgBox ("Per Salvare la fattura usare il Pulsante; il file NON E' stato salvato")
    Cancel = True
End If
End Sub

Poi inserisci un Modulo standard:
-Menu /Inserisci /Modulo

In questo nuovo modulo inserisci questo codice:
Codice: Seleziona tutto
Public EOG As Boolean

Sub SalvaF()
Dim TWbN As String, nWb As Workbook, I As Long, nName As String
'
If IsNumeric(Range("x1").Value) = True Then
'    Dim sh As Worksheet
    Const cPathSalvataggio As String = "C:\PROVA\"     '<<< COMPILA COI TUOI DATI
    Application.EnableEvents = False
    With ThisWorkbook
        For I = 1 To ThisWorkbook.Worksheets.Count
            If I = 1 Then
                .Sheets(I).Copy
                Set nWb = ActiveWorkbook
            Else
                .Sheets(I).Copy after:=nWb.Sheets(I - 1)
            End If
        Next I
'        Set sh = .Worksheets("FATTURE")
        nName = cPathSalvataggio & .Worksheets("FATTURE").Range("E3") & ".xlsx"
        On Error GoTo gErr
            nWb.SaveAs Filename:=nName, FileFormat:=xlOpenXMLWorkbook
        On Error GoTo 0
        nWb.Close
    End With
'    Set sh = Nothing
    SalvaPdfOR
    SalvaPdfCO
    ThisWorkbook.Saved = True
    Application.EnableEvents = True
End If
Exit Sub
gErr:
On Error GoTo 0
MsgBox ("La fattura non e' stata salvata")
End Sub



Sub CloseF()
EOG = False
If ThisWorkbook.Saved = True Then
    EOG = True
    ThisWorkbook.Close
    EOG = False
Else
    MsgBox ("La fattura non e' stata ancora salvata")
End If
End Sub



Sub ForzaSalva()       'ESEGUIRE per FORZARE il SALVATAGGIO DEL "File Modello"
EOG = True
ThisWorkbook.Save
EOG = False
End Sub


Sub ForzaChiudi()      'ESEGUIRE per FORZARE LA CHIUSURA DEL FILE Modello
EOG = True
ThisWorkbook.Close False
End Sub

L’istruzione marcata <<< va personalizzata col percorso di salvataggio (con lo \ finale).

La Sub SalvaF deve essere associata a un Pulsante e serve per:
-creare i due file fattura
-creare una copia del file Excel senza macro, che corrisponde alle fatture stampate.

La Sub CloseF deve anche essa essere associata a un Pulsante, e serve per chiudere il file “Modello”. Se risultano delle modifiche non ancora salvate come file Fattura la chiusura e’ impedita.
In questo caso:
-completare i dati e salvare la fattura;
-OPPURE eseguire la Sub ForzaChiudi, che chiude il “modello” ignorando le modifiche.

Della Sub ForzaChiudi abbiamo appena parlato. La Sub ForzaSalva puo’ invece essere usata per forzare il salvataggio del file “Modello”, ad esempio mentre lo progetti o lo modifichi (ad esempio come stiamo facendo adesso)

Per completare l file devi aggiungere su un secondo Modulo vba standard il codice delle Sub SalvaPdfOR e SalvaPdfCO, che hai gia', e infine due pulsanti:
-da inserire sul foglio di cui controlli la cella X1
-il primo lo chiami Salva Fattura, e gli associ la Sub SalvaF
-il secondo lo chiami Chiudi File, e gli associ la Sub CloseF

Se ti sembra giusto quanto proposto allora prova e fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 18/10/18 13:45

Ciao Antony.
Ho provato e quasi tutto va bene.
Ho modificato il pezzo dove la macro richiamava le macro SalvaPdfOR SalvaPdfCO e ora la macro è cosi
Codice: Seleziona tutto
Public EOG As Boolean

Sub SalvaF()
Dim TWbN As String, nWb As Workbook, I As Long, nName As String
'
If IsNumeric(Range("x1").Value) = True Then
'    Dim sh As Worksheet
    Const cPathSalvataggio As String = "C:\Users\celestino\Desktop\Fatture\"     '<<< COMPILA COI TUOI DATI
    Application.EnableEvents = False
    With ThisWorkbook
        For I = 1 To ThisWorkbook.Worksheets.Count
            If I = 1 Then
                .Sheets(I).Copy
                Set nWb = ActiveWorkbook
            Else
                .Sheets(I).Copy after:=nWb.Sheets(I - 1)
            End If
        Next I
'        Set sh = .Worksheets("FATTURE")
        nName = cPathSalvataggio & .Worksheets("FATTURE").Range("E3") & ".xlsx"
        On Error GoTo gErr
            nWb.SaveAs Filename:=nName, FileFormat:=xlOpenXMLWorkbook
        On Error GoTo 0
        nWb.Close
       
With ThisWorkbook
        Set sh = .Worksheets("FATTURE")
        If .Path = "" Then Exit Sub
        pdfFile = cPathSalvataggio & .Worksheets("FATTURE").Range("E3") & " OR" & ".pdf"
    End With
'
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFile _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, From:=Range("y204"), To:=Range("z204"), OpenAfterPublish:=False
   
With ThisWorkbook
        Set sh = .Worksheets("FATTURE")
        If .Path = "" Then Exit Sub
        pdfFile = cPathSalvataggio & .Worksheets("FATTURE").Range("E3") & " CO" & ".pdf"
    End With
'
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFile _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, From:=Range("y205"), To:=Range("z205"), OpenAfterPublish:=False
 
    End With
'    Set sh = Nothing
   
    ThisWorkbook.Saved = True
    Application.EnableEvents = False
   
End If
Exit Sub
gErr:
On Error GoTo 0
MsgBox ("La fattura non e' stata salvata")
End Sub



Sub CloseF()
EOG = False
If ThisWorkbook.Saved = True Then
    EOG = True
    ThisWorkbook.Close
    EOG = False
Else
    MsgBox ("La fattura non e' stata ancora salvata")
End If
End Sub



Sub ForzaSalva()       'ESEGUIRE per FORZARE il SALVATAGGIO DEL "File Modello"
EOG = True
ThisWorkbook.Save
EOG = False
End Sub


Sub ForzaChiudi()      'ESEGUIRE per FORZARE LA CHIUSURA DEL FILE Modello
EOG = True
ThisWorkbook.Close False
End Sub


1)Una cosa che vorrei e che non mi venga salvato in .xlsx il file ma uguale a come è con le macro attive.
Una vera è propria coppia identica all'originale.
2)Mettere un altro pulsante che mi pulisca la fattura in certe celle cosi da poter riniziare un'altra fattura da capo sempre se ho gia salvato la fattura che sto facendo. le celle da pulire sarebbero:C21:H190 J21:K190 M21:M190
Grazie
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Anthony47 » 19/10/18 23:17

Mi era sfuggito...

Mi spieghi quale uso faresti delle macro abilitate?

Quanto alla pulizia del foglio, la puoi creare direttamente tu, registrando una macro mentre pulisci manualmente le celle che hai indicato; poi la associ a un pulsante che inserisci nel foglio da ripulire.
Per le istruzioni e i primi suggerimenti su come registrare una macro:
viewtopic.php?f=26&t=103893&p=622593#p622593

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

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 20/10/18 05:58

ciao Antony.
Voglio che mi venga salvata uguale perche capita che anche una volta finite ci sono degli errori di compilazione fatta da me e quindi devo correge. Mi apro la fattuta interessata e risalvo e cosi mi modifica anche i .pdf.
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Anthony47 » 20/10/18 12:54

Per me sarebbe stato molto piu' semplice creare una copia del file, senza lavorare per eliminare le macro.
Ma in questo modo dal file copiato, le macro creeranno un'altra copia, e se fai un'altra modifica avrai una terza copia, e non saprai piu' quale e' l'accoppiata xls-pdf.
Comunque, se la vuoi cosi' allora sostituisci la Sub SalvaF con quest'altra versione:
Codice: Seleziona tutto
Sub SalvaF()
Dim TWbN As String, nWb As Workbook, I As Long, nName As String

If IsNumeric(Range("x1").Value) = True Then
'    Dim sh As Worksheet
    Const cPathSalvataggio As String = "C:\PROVA\"     '<<< COMPILA COI TUOI DATI
    Application.EnableEvents = False
'variate che salva copia con macro
        nName = cPathSalvataggio & Worksheets("FATTURE").Range("E3") & ".xlsm"
        ThisWorkbook.SaveCopyAs nName
    Application.EnableEvents = True
    SalvaPdfOR
    SalvaPdfCO
    ThisWorkbook.Saved = True
    Application.EnableEvents = True
End If
End Sub


NON CI SONO le modifiche che tu avevi apportato al precedente mio codice; devi inserirle tu.

Se vuoi la possibilita' di modificare quanto hai gia' consolidato (e magari spedito al committente) secondo me dovresti crearti la possibilita' di "Editare" le fatture, ma sempre tramite il file "master".
Se ti interessa questo metodo, allora registrati una macro mentre, partendo dal tuo file "master"
-apri un file xlsx che hai creato tramite la Sub SalvaF
-diligentemente copi le aree che potrebbero risultare compilate (non solo quelle effettivamente compilate, in quella fattura) e le incolli sul relativo foglio di "master"
-chiudi il file xlsx
-fermi la registrazione

Pubblica poi il codice della macro cosi' ottenuta e gli applicheremo le modifiche per trasformarlo in modo da consentirti di scegliere quale fattura editare.

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

Re: [excel2007] Chiudere file excel e salvare in pdf

Postdi Cele79 » 24/10/18 14:46

Ciao Anthony.
Sono riuscito a sistemare la fattura come volevo.
Ho fatto qualche correzzione e ora sembra funzioni come piace a me.
Ho deciso di mettere il file visto che me lo hano chiesto.
Un cosigli che vi do è di mettere il file dentro una cartella e di modificare le macro dove c'è la dicitura '<<< COMPILA COI TUOI DATI.
Mi raccomando di controllarle tutte le macro.
Non cambiate il nome del file da come è perche ogni volta che lo riaprite si rigenera quel nome di file.
Oltre ai pulsanti SALVA PULISCI e CHIUDI ci sono atri due pulsati un po nascosi che si trovano nella colonna AD.
Sono due lettere S e C che stanno per SALVA FORZATO e CHIUDI FORZATO.
Ringrazio tanto Anthoni per avermi aiutato a portare a termine questo lavoro.
[url]
http://www.filedropper.com/afattura1234
[/url]
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32


Torna a Applicazioni Office Windows


Topic correlati a "[excel2007] Chiudere file excel e salvare in pdf":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti