È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Semplice macro per salvare in pdf

Ultimo Aggiornamento: 23/04/2015 19:37
Post: 1
Registrato il: 10/04/2015
Età: 55
Utente Junior
2003
OFFLINE
10/04/2015 09:32

Ciao a tutti,
ho appena iniziato a girare con le macro e chiedo il vs aiuto per creare una semplice macro che mi salvi in pdf il foglio di lavoro in excel.
La versione è 2003 e sul pc ho installato pdf creator.
In realtà il foglio si compone in più pagine e in vari punti del documento volevo mettere dei bottoni per salvare in pdf vari intervalli di pagine, tutti diversi (es.: da 1 a 7 oppurre da 1 a 9 ecc.) che poi archivio in hd esterno in cartelle diverse a seconda dell'intervallo. Il nome del file poi lo assegno io nel momento di salvare nella cartella di destinazione. Possibile?
Grazie a tutti
Post: 0
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
13/04/2015 11:55

...ho fatto una richiesta tanto difficile?
Grazie
Post: 1.684
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
13/04/2015 17:51

ciao

come dicasi in TV Facile facile.it

usa il registratore di macro e vedrai che ti crea automaticamente la procedura per fare questo
questa che vedi e' quella che ho creato sul mio PC in questo momento dove stampa la prima pagina
tu fai i passaggi che ti servono e vedrai che funziona il tutto

Sub Stampa_PDF()
'
' Macro1 Macro

Application.ActivePrinter = "PDFCreator su Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"PDFCreator su Ne01:", Collate:=True
End Sub

Ciao da locate
excel 2007 / 13
Post: 1
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
14/04/2015 10:37

Grazie per la tua risposta, ma così non riesco a fare quello che volevo, perchè questa macro non specifica la cartella di destinazione in cui salvare l'intervallo del documento che voglio. Con questa macro due intervalli diversi vanno nella stessa destinazione mentre io volevo decidere anche questo. ...altri aiuti? Grazie comunque
Post: 2.947
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Veteran
2010
OFFLINE
14/04/2015 15:05

ma tu ci hai provato ad usare il registratore ?

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 2
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
14/04/2015 15:49

...certo e non indica il percorso dove salva il file ma porto sempre il file nell'ultimo percorso fatto. Quindi file diversi per numero di pagine finiscono sempre nella stessa cartella di salvataggio, cioè l'ultima usata!
Post: 3
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
21/04/2015 18:00

... nessuno che mi può aiutare?
Grazie
Post: 5
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
21/04/2015 18:12

ciao.

Mi è quasi tutto chiaro per darti una mano, tranne due cose.
Tu dici di voler salvare intervalli di fogli ("Tipo da 1 a 7, oppure da 8 a 9). Due domande:

1) I fogli che vuoi salvare come PDF sono proprio nominati cosi, con dei numeri? Oppure hanno nomi specifici? Oppure ancora quando dici "da 1 a 7" intendi "dal primo al settimo" (Cambia di molto)

2) Vuoi ottenere un unico PDF con tutti i fogli oppure tanti PDF quanti sono i fogli selezionati?

Fammi sapere queste cose che provo ad accontentarti.
[Modificato da guybruhs82 21/04/2015 18:15]
Windows 7 - Office 2010
Post: 1
Registrato il: 10/04/2015
Età: 55
Utente Junior
2003
OFFLINE
21/04/2015 18:45

...allora i nomi del file in pdf lo definiaco io ogni volta, e sono sempre diversi mentre il file in pdf dovrebbe essere un unico pdf composto da più pagine ma non più pdf singoli per ogni pagina. Grazie mille e per ogni info sono quà
Post: 7
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
21/04/2015 19:50

Scusami, forse non ho espresso bene la domanda.

Tu hai un documento Excel composto da più fogli. Mi interessa sapere come sono eventualmente nominati questi fogli di lavoro. Quando tu dici che vuoi convertire in PDF i fogli "da 1 a 7", per scrivere una macro che comprenda quei fogli devo capire come essi sono nominati.

Se i fogli sono chiamati 1, 2, 3... ecc. ecc. Io dirò alla macro di selezionare quei fogli sulla base del range che decidi (Ad esempio da 1 a 7) e gli convertirò in PDF.

Se i fogli hanno tutti nomi diversi. (Ad esempio: "FoglioDATI", "Somme", "Report" ecc. ecc.) Dovrò darti la possibilità di selezionarli.

Se a prescindere a te interessa l'ordine in cui i fogli sono disposti, non farò altro che prendere il range che decidi (Sempre ad esempio da 1 a 7) e convertire in PDF i fogli dal primo al settimo nell'ordine in cui si trovano.

Appena mi fai sapere questo posso capire come aiutarti.

Saluti,
Antonio.
Windows 7 - Office 2010
Post: 2
Registrato il: 10/04/2015
Età: 55
Utente Junior
2003
OFFLINE
21/04/2015 20:38

...forse mi sono espresso male: il foglio di lavoro è unico, anche se magari al posto di foglio1 lo chiamo in modo diverso ed al suo interno ho più pagine e sono queste che voglio salvare ad intervalli diversi in file pdf con nomi diversi che decido di volta in volta. Se non ricordo vale quando crei un file excel ci sono 3 fogli di lavoro. Grazie e spero di esser stato chiaro
Post: 8
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
22/04/2015 11:03

No ok ok. Ora ho capito.

Prova questo:


Sub SalvaFogliPDF()

    On Error GoTo START3:
    
    Dim fileD As FileDialog
    Set fileD = Application.FileDialog(msoFileDialogFolderPicker)
    
    Dim Dest1 As Variant
    Dim Page1 As Integer
    Dim Page2 As Integer
    
    

With fileD
        If .Show = 0 Then
            Exit Sub
        Else
            For Each Dest1 In .SelectedItems
                CartellaDestinazione = Dest1
            Next
        End If
    End With
    
    Set fileD = Nothing
    
    Nomefile = InputBox("Come vuoi chiamare il PDF?", "//Scegli nome//")
    
    'RIPULISCO IL NOME SCELTO DA ALCUNI CARATTERI SPECIALI NON CONSENTITI
    Nomefile = Replace(Nomefile, "/", "")
    Nomefile = Replace(Nomefile, "\", "")
    Nomefile = Replace(Nomefile, ":", "")
    Nomefile = Replace(Nomefile, "*", "")
    Nomefile = Replace(Nomefile, "?", "")
    Nomefile = Replace(Nomefile, """", "")
    Nomefile = Replace(Nomefile, "<", "")
    Nomefile = Replace(Nomefile, ">", "")
    Nomefile = Replace(Nomefile, "|", "")
    
START1:
    Page1 = InputBox("Salva dalla pagina...", "//Scegli pagine//")
    If Page1 <= 0 Then
        MsgBox "Il numero di pagina iniziale non può essere minore o uguale a zero"
        GoTo START1:
    End If
             
START2:
    Page2 = InputBox("Alla pagina...", "//Scegli pagine//")
    If Page2 < Page1 Then
        MsgBox "Il numero di pagina finale non può essere inferiore alla pagina iniziale"
        GoTo START2:
    End If
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        CartellaDestinazione & "\" & Nomefile & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=Page1, To:=Page2, _
        OpenAfterPublish:=True
    
    MsgBox "PDF salvato correttamente al percorso:" & Chr(13) & Chr(13) & CartellaDestinazione & "\" & Nomefile & ".pdf"
    Exit Sub
    
START3:
    MsgBox "Si é verificato un errore"
    
End Sub



- Per prima cosa ti chiederà di selezionare la cartella in cui vuoi salvare il PDF
- Poi ti chiederà il nome che vuoi dare al PDF
- Ancora dopo ti chiederà il numero della prima e dell'ultima pagina che vuoi salvare.
Windows 7 - Office 2010
Post: 4
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
22/04/2015 11:57

...grazie per l'impegno.
Ho appena provato e fa quello che dici solo che quando arrivo alla fine mi dice "si è verificato errore" con in alto a sinistra Microsoft Excel e bottone per solo OK e quindi non riesco a fare nulla!
Che mi consigli? Grazie
Post: 9
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
22/04/2015 12:09

Molto strano. Io l'ho riprovato e funziona.
Che nome stai dando al file da salvare?.
Windows 7 - Office 2010
Post: 5
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
22/04/2015 14:55

..ho provato con diversi, sia come nome (tipo:ugosugo) che numerico (tipo: 21_89) e sia mettendo .pdf che non. Dopo provo su altro pc e ti dico.
Post: 10
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
22/04/2015 15:42

Ok. Fai il tentativo. Nel caso ti dia ancora picche possiamo fare due cose:

1) Dal codice che ti ho dato cancelli:

On Error GoTo START3
che si trova all'inizio, e:

START3:
    MsgBox "Si é verificato un errore"
che si trova alla fine.

Poi rilanci la macro. Si dovrebbe bloccare e ti dovrebbe permettere di entrare in modalità debug. A quel punto mi dici dove si blocca.


2) Oppure in alternativa, se possibile, mi mandi il file su cui stai lavorando e ci guardo direttamente io. Se è troppo grande per postarlo qua mi mandi una mail poi io mi occupo di descrivere il motivo dell'errore.
Windows 7 - Office 2010
Post: 6
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
22/04/2015 15:48

...mi risponde "proprietà o metodi non supportati dall'oggetto"
se tolgo le linee che mi hai indicato.
E se provo in altro pc ... uguale!
Post: 12
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
22/04/2015 18:39

Io un idea me la sono fatta di quale sia il problema.

Senti facciamo cosi:

Crei un nuovo documento Excel, ci butti dentro la mia macro, e su "foglio1" scrivi qualcosa in una cella qualsiasi, (Altrimenti se il foglio è completamente vuoto la stampa non può funzionare), poi provi a lanciare la macro. Se ti da ancora l'errore, salvi il documento con l'attivazione delle macro e lo mandi qui.

Rimango in attesa.

;-)
Windows 7 - Office 2010
Post: 1.787
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
22/04/2015 19:05

Buona sera, guybruhs;
non ho testato il Tuo Codice, ma, pensare di modificare la parte finale del Codice in questo modo:
START2:
    Page2 = InputBox("Alla pagina...", "//Scegli pagine//")
    If Page2 < Page1 Then
        MsgBox "Il numero di pagina finale non può essere inferiore alla pagina iniziale"
        GoTo START2:
    End If
     
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        CartellaDestinazione & "\" & Nomefile & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=Page1, To:=Page2, _
        OpenAfterPublish:=True
     
    MsgBox "PDF salvato correttamente al percorso:" & Chr(13) & Chr(13) & CartellaDestinazione & "\" & Nomefile & ".pdf"
    Exit Sub
		End
     
START3:
    MsgBox "Si é verificato un errore"
     
End Sub

non credi che End risolverebbe il problema?
Nel caso in cui non si ferifichino errori, il Codice si fermerebbe prima di:
- START3:
mentre, in caso di errore, giustamente, lo seganlerebbe.

Grazie dell'attenzione che potrai dedicarmi.


A disposizione.

Buona serata.

Giuseppe


Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 7
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
23/04/2015 08:50

...Ragazzi a me continua a darmi errore in qualsiasi caso, anche con l'altra modifica!
In ogni caso, chiedevo un percorso definito nella macro, di modo che se schiaccio il bottone il file mi si salva automaticamente con quel intervallo il quella cartella! Le finestre me le chiede anche anche windows ed è li che perdo tempo avendo una struttura di cartelle molto ramificata.
Certo, poi mi direte dove agire per l'intervallo e la destinazione, ma quello chiedevo. E' possibile questo?
Grazie a tutti per la grande pazienza ed esperienza ... che io non ho!
Post: 13
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
23/04/2015 09:38

x GiuseppeMN: Sono d'accordo. Infatti avevo messo un istruzione "Exit Sub" prima di "START3:" proprio per fare quello. Hai riscontrato che non funziona?. Io credo che il problema di cui ci parla Giorgioarte sia legato a "Application.FileDialog" e a qualche libreria, ma potrei sbagliarmi.

x giorgioarte: Se il percorso lo vuoi statico allora si semplifica tutto, anche perché vado a levare proprio "Application.FileDialog" che secondo me è quello che genera il problema. Ti riporto un nuovo codice. Modifica il percorso della variabile "CartellaDestinazione" dove ti ho indicato (Per ora ne ho messo uno fittizzio)



Sub SalvaFogliPDF()
 
    On Error GoTo START3:
     
    'EDITARE IL PERCORSO IN BASE ALL'ESIGENZA SENZA METTERE "\" ALLA FINE DEL PERCORSO.
    CartellaDestinazione = "C:\Users\ajejebrazorf\Desktop"
          
    Nomefile = InputBox("Come vuoi chiamare il PDF?", "//Scegli nome//")
     
    'RIPULISCO IL NOME SCELTO DA ALCUNI CARATTERI SPECIALI NON CONSENTITI
    Nomefile = Replace(Nomefile, "/", "")
    Nomefile = Replace(Nomefile, "\", "")
    Nomefile = Replace(Nomefile, ":", "")
    Nomefile = Replace(Nomefile, "*", "")
    Nomefile = Replace(Nomefile, "?", "")
    Nomefile = Replace(Nomefile, """", "")
    Nomefile = Replace(Nomefile, "<", "")
    Nomefile = Replace(Nomefile, ">", "")
    Nomefile = Replace(Nomefile, "|", "")
     
START1:
    Page1 = InputBox("Salva dalla pagina...", "//Scegli pagine//")
    If Page1 <= 0 Then
        MsgBox "Il numero di pagina iniziale non può essere minore o uguale a zero"
        GoTo START1:
    End If
              
START2:
    Page2 = InputBox("Alla pagina...", "//Scegli pagine//")
    If Page2 < Page1 Then
        MsgBox "Il numero di pagina finale non può essere inferiore alla pagina iniziale"
        GoTo START2:
    End If
     
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        CartellaDestinazione & "\" & Nomefile & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=Page1, To:=Page2, _
        OpenAfterPublish:=True
     
    MsgBox "PDF salvato correttamente al percorso:" & Chr(13) & Chr(13) & CartellaDestinazione & "\" & Nomefile & ".pdf"
    Exit Sub
     
START3:
    MsgBox "Si é verificato un errore"
     
End Sub


Prova e facci sapere.
[Modificato da guybruhs82 23/04/2015 09:38]
Windows 7 - Office 2010
Post: 8
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
23/04/2015 10:09

...messo come percorso: "C:\Documents and Settings\giorgio\Documenti\Immagini" ma non cambia nulla e sempre messaggio d'errore!
Post: 15
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
23/04/2015 11:19

Allora a questo punto ti chiedo un file di esempio. Se non puoi mandarmi quello su cui stai lavorando tu crea un nuovo documento Excel, metti la macro in un modulo, vai su "foglio1", valorizzi una cella qualsiasi e poi provi a lanciare la macro. Se non funziona salvi il documento come "XLSX" e lo posti qua.

A sentimento non riesco a capire che problema può essere.
Windows 7 - Office 2010
Post: 9
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
23/04/2015 12:00

...prova a vedere.
...se però da te funziona allora vado cerco un'esorcista!!
Grazie mille
Post: 10
Registrato il: 11/03/2010
Città: MARENO DI PIAVE
Età: 55
Utente Junior
2003
OFFLINE
23/04/2015 12:00

...prova a vedere.
...se però da te funziona allora vado cerco un'esorcista!!
Grazie mille
Post: 16
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
23/04/2015 12:39

Conosci un buon esorcista?

Hai Office 2003 per caso? Se si è quello il problema. (Perché da me funziona correttamente).

Ti suggerisco di mettere la versione di office che usi nella tua firma.
Windows 7 - Office 2010
Post: 3
Registrato il: 10/04/2015
Età: 55
Utente Junior
2003
OFFLINE
23/04/2015 12:56

...si 2003! Nel post iniziale l'ho indicato. Cosa posso fare allora se ho solo il 2003? Altrimenti cosa dovrei avere?
Grazie ancora
Post: 1.789
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
23/04/2015 17:16

Buona sera, guybruhs.

guybruhs82, scrive:


... avevo messo un istruzione "Exit Sub" prima di "START3:" proprio per fare quello. Hai riscontrato che non funziona?.



Exit Sub funziona correttamente.

Con Excel 2013, ho riscontrato che la procedura funziona correttamente se la pagina iniziale è indicata come 1

Voglio dire, se a InputBox:
 Page1 = InputBox("Salva dalla pagina...", "//Scegli pagine//") 

viene indicato 2, la Procedura segnala l'errore 400

Molto probabilmente sbaglio qualche cosa, ma anche impostando:
-    Page1 = 1
-    Page2 = 2 (oppure 3)
, in pdf, viene salvata una sola pagina; quella corrente.

Spero possa d'aiuto per risolvere il Problema.


A disposizione.

Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 20
Registrato il: 21/04/2015
Città: LOIRI PORTO SAN PAOLO
Età: 41
Utente Junior
2010
OFFLINE
23/04/2015 18:17

Grazie per il test GiuseppeMN. Il problema che mi segnali te lo fa perché non c'è nulla da stampare negli ipotetici fogli dal primo in poi. Nel file che ha postato Giorgio ha materialmente scritto qualcosa su quello che in stampa sarebbe il foglio uno.. quindi:

- Se chiedi di stampare da 1 a 10 (Ad esempio), funziona, ma essendoci qualcosa da stampare solo per il foglio 1 non ti genera altri fogli.

- Se gli chiedi di stampare da 2 a 10 (Ad esempio), da errore perché non c'è nulla da stampare.

Se vuoi fare una prova, valorizza la cella "A1000", e poi riprova. Vedrai che non ti darà nessun errore.




Per quanto riguarda riuscire a far fare la stessa operazione con Office 2003 ancora non sono riuscito. Potrei lanciare la stampa su PDFCreator ma non credo di riuscire a fargliela salvare automaticamente nella posizione preimpostata. In pratica la macro preparerebbe il range di stampa (Da foglio a foglio selezionato") e la lancerebbe sulla stampante predefinita, poi starebbe a te nominare il file e salvarlo dove desideri. Ma mi rendo conto che questa soluzione è lontana dalla tua richiesta.
Windows 7 - Office 2010
Post: 1.791
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
23/04/2015 19:37

Buona sera, guybruhs;
Grazie del riscontro.

Solo per completezza, nei Fogli di lavoro:
-   Foglio2
-   Foglio3
Prima di lanciare il Codice, avevo scritto in A1, rispettivamente, "Foglio di lavoro corrente, Foglio2" e "Foglio di lavoro corrente, Foglio3"

Se lo ritieni opportuno, ma non credo sia necessario, posso allegare il File con il quale ho eseguito i test.



A disposizione.

Buona serata.

Giuseppe


Windows XP - Excel 2000
Windows 10 - Excel 2013
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 17:28. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com