Pagina 1 di 1

Macro esportazione fogli visibili in pdf

Inviato: domenica 17 dicembre 2023, 15:41
da erasmo84
buon pomeriggio ho utilizzato una macro in calc per esportare dei fogli in pdf, ho solo un problema, mi esporta solo il primo foglio che risulta attivo e non quelli visibili. qualcuno mi puo aiutare? allego la macro.
il risultato deve essere un unico file con tutti i fogli attivi. grazie in anticipo

Codice: Seleziona tutto

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub ExportaInPdfFoglioAttivo
		   
    Sheets("xxx").Visible = False
    Sheets("xxxxx").Visible = False
    Sheets("xxxxx").Visible = False
    Sheets("xxxxxxx").Visible = False
    Sheets("xxxxxxxx").Visible = False
    Sheets("xxxxxxx").Visible = False
    Sheets("xxxxxx").Visible = False
    Sheets("xxxxxxxxx").Visible = False
    Sheets("xxxxx").Visible = False
    Sheets("xxxxxxxx").Visible = False
    Sheets("xxxxx").Visible = False
    Sheets("xxxxxxxxxxx").Visible = False
    Sheets("1").Visible = False
    Sheets("2").Visible = False
    Sheets("3").Visible = False
    Sheets("4").Visible = False
    Sheets("5").Visible = False
    Sheets("6").Visible = False
    Sheets("7").Visible = False
    Sheets("1").Visible = True
    Sheets("2").Visible = True
    Sheets("3").Visible = True
    Sheets("4").Visible = True
    Sheets("5").Visible = True
    Sheets("6").Visible = True
    Sheets("7").Visible = true
    Sheets("1").Activate
    Sheets("xxxxxxx").Visible = False
 
    
FoglioAttivo = ThisComponent.CurrentController.ActiveSheet
REM --- Percorso di salvataggio del file pdf -----------------------
'PercorsoSalvataggio = ConvertToUrl("file:///C:/Percorso/")        ' Esempio WINDOWS da cambiare

REM --- Nome del file pdf ------------------------------------------------------
NomeDelfile =  "xxxxxxx_" & Format(Now(), "dd-mm-yyyy") & ".pdf"
				
REM --- Range da stampare. Notare l'utilizzo di "Selection" e “FogliAttivo”
Dim RANGE_Stampa(0) as new com.sun.star.beans.PropertyValue
RANGE_Stampa(0).Name = "Selection"
RANGE_Stampa(0).Value = FoglioAttivo

REM --- Esporta in formato PDF il “FoglioAttivo”
Dim args1(3) as new com.sun.star.beans.PropertyValue
' Notare che (3) = al Numero delle definizioni (Ossia 0,1 e 2 come di seguito).
args1(0).Name = "URL"
args1(0).Value = PercorsoSalvataggio
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = RANGE_Stampa()

REM --- Se il nome del file = stringa nulla esci dalla procedura ----------------------
If NomeDelFile = "" Then Exit Sub

REM --- Se il nome del file esiste già chiedi se sovrascrivere -------------------------
If FileExists(PercorsoSalvataggio & NomeDelFile) Then
REM --- Richiesta conferma di procedere --- Scegliendo "Annulla" esci dalla procedura -----
	If Msgbox("ATTENZIONE : Esiste già un file con lo stesso nome nel percorso indicato." & CHR$(10) & _
	CHR$(10) & "                                Vuoi sovrascrivere ?",33,filename) =2 then exit sub
	end if

REM ----- Salva il foglio attivo (tutte le sue pagine) in pdf
ThisComponent.StoreToURL(PercorsoSalvataggio & NomeDelFile , Args1())

REM ----- Avviso di fine lavoro ------------------------------------
Msgbox "Operazione eseguita con successo.", 0, "Esportazione PDF:"


    Sheets("xxxxxxx").Visible = True
    Sheets("xxxxx").Activate
    Sheets("xxxx").Visible = False
    Sheets("xxxxxxx").Visible = Falsee
    Sheets("xxxxxxx").Visible = False
    Sheets("xxxxxx").Visible = False
    Sheets("xxxxxx").Visible = False
    Sheets("xxxxx").Visible = False
    Sheets("xxxxxxxx").Visible = False
    
exitHandler:
        Exit Sub
errHandler:
        MsgBox "Non ho potuto salvare il file PDF"
Resume exitHandler

  

End Sub

Sub xxxxxxxxxxxxx()
'
' xxxxxxxxxxxxxxxx
'

'
    Sheets("xxxxxxxxxxx").Select
    Sheets("xxxxxxx").Visible = True
    Sheets("xxxxxx").Select
    
End Sub

funziona tutto pero nel file salvato vedo solo il primo foglio attivo e non quelli visibili.

Re: Macro esportazione fogli visibili in pdf

Inviato: domenica 17 dicembre 2023, 16:54
da charlie
Ciao, la prossima volta usa per cortesia la formattazione del codice che alleghi.
E magari anche le maiuscole, grazie.

Re: Macro esportazione fogli visibili in pdf

Inviato: domenica 17 dicembre 2023, 17:17
da erasmo84
Scusami ;)

Re: Macro esportazione fogli visibili in pdf

Inviato: domenica 17 dicembre 2023, 18:17
da charlie
:super:

Re: Macro esportazione fogli visibili in pdf

Inviato: lunedì 18 dicembre 2023, 10:49
da Gaetanopr
Perchè in VBA? Questo è uno di quei casi in cui il registratore di macro fà miracoli!!
Registra una macro e come opzione nell'esportazione in pdf nella scheda Generale nel riquadro intervallo indica "tutto".
Dovrai soltanto modificare nome del file a tuo piacimento.

Re: Macro esportazione fogli visibili in pdf

Inviato: lunedì 18 dicembre 2023, 17:52
da erasmo84
si ma avendo piu schede questa macro chiude quelle non necessarie e mi esporta solo quelle aperte assegnato un nome specifico con data

Re: Macro esportazione fogli visibili in pdf

Inviato: lunedì 18 dicembre 2023, 19:22
da lucky63
.
Sostituisci queste righe di codice:
.

Codice: Seleziona tutto

REM --- Range da stampare. Notare l'utilizzo di "Selection" e “FogliAttivo”
Dim RANGE_Stampa(0) as new com.sun.star.beans.PropertyValue
RANGE_Stampa(0).Name = "Selection"
RANGE_Stampa(0).Value = FoglioAttivo

REM --- Esporta in formato PDF il “FoglioAttivo”
Dim args1(3) as new com.sun.star.beans.PropertyValue
' Notare che (3) = al Numero delle definizioni (Ossia 0,1 e 2 come di seguito).
args1(0).Name = "URL"
args1(0).Value = PercorsoSalvataggio
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = RANGE_Stampa()
.
Con queste:
.

Codice: Seleziona tutto

REM --- Esporta in formato PDF 
Dim args1(1) As New com.sun.star.beans.PropertyValue
args1(0).Name = "Overwrite"
args1(0).Value = True 
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
.
... e prova ...
.

Re: Macro esportazione fogli visibili in pdf

Inviato: lunedì 18 dicembre 2023, 20:49
da erasmo84
grazie per la risposta ma ora mi crea il pdf con tutti i fogli, non mi esclude quelli che non voglio nel file.

Re: Macro esportazione fogli visibili in pdf

Inviato: lunedì 18 dicembre 2023, 22:12
da lucky63
.
Prova questo esempio.
Ci sono sei fogli di cui due nascosti.
L'esportazione dei quattro fogli visibili avviene correttamente in unico file PDF.
.

Re: Macro esportazione fogli visibili in pdf

Inviato: martedì 19 dicembre 2023, 1:49
da erasmo84
grazie per la disponibilita, provo ma ottengo sempre tutti i fogli non capisco dove sta l'errore.se vede la mia macro funziona solo che mi da 1 pagina invece devono essere 28. cole ve varie prove dei codici forniti ottengo sempre 54 pagine

Re: Macro esportazione fogli visibili in pdf

Inviato: martedì 19 dicembre 2023, 7:34
da lucky63
.
Nel file presenti 6 fogli tutti visibili (Foglio1,2,3,4,5,6).
Da macro:
- Nascondo alcuni fogli (Foglio2,4,6)
- Esporto in unico file pdf i fogli rimasti visibili (Foglio1,3,5)
- Rendo nuovamente visibili i fogli che avevo nascosto (Foglio2,4,6).

Prove fatte con LibreOffice.
Sia con "Option VBASupport 1" ... che senza ... funzionano perfettamente.
.

Re: Macro esportazione fogli visibili in pdf

Inviato: martedì 19 dicembre 2023, 17:02
da erasmo84
grazie ho visto il test e funziona, ma nn riesco ad adattarla alla mia macro :crazy:

Re: Macro esportazione fogli visibili in pdf

Inviato: martedì 19 dicembre 2023, 17:59
da lucky63
erasmo84 ha scritto: martedì 19 dicembre 2023, 17:02 grazie ho visto il test e funziona
Ok Grazie del riscontro.
.
erasmo84 ha scritto: martedì 19 dicembre 2023, 17:02 ma nn riesco ad adattarla alla mia macro
Dal codice che hai inserito nel post iniziale non si direbbe che tu non ci possa riuscire.
Perciò io non vado oltre ...

Puoi sempre utilizzare quello dei miei due ultimi test che preferisci e ...
- Nascondere manualmente i fogli presenti o e/o in seguito eliminarli;
- Importare nel file i fogli del tuo file;
- modificare adeguatamente le righe di codice ...con False/True della mia macro
- riportare tante di tali righe quante te ne servono ...
fare prove.
.

Re: Macro esportazione fogli visibili in pdf

Inviato: martedì 19 dicembre 2023, 19:59
da erasmo84
non capisco se questa parte di codice va inserita

Codice: Seleziona tutto

'Option VBASupport 1
SUB EsportaComeUnicoFilePdfTuttiFogliVisibili
Doc  = ThisComponent
Url = Doc.GetUrl()		'Acquisisco l'URL del file nel computer in uso

REM --- Dall'URL ottenuto automaticamente ricavo "URL SENZA il NOME FILE" del file della macro ---
For X = Len(Url) To 1 Step -1
If InStr(X , Url , "/") <> 0 Then
PosizioneUltimaBarra = X
X=0
End If
Next
UrlSenzaNomeFile = Left(url , PosizioneUltimaBarra

Re: Macro esportazione fogli visibili in pdf

Inviato: martedì 19 dicembre 2023, 22:45
da erasmo84
basta per ora ci rinuncio, ora non mi attiva piu i pulsanti che chiudevano le schede e andavano alla home. le ho provate tutte per esportare in pdf. grazie a tutti

Re: Macro esportazione fogli visibili in pdf

Inviato: mercoledì 20 dicembre 2023, 9:37
da Gaetanopr
erasmo84 ha scritto: martedì 19 dicembre 2023, 19:59 non capisco se questa parte di codice va inserita

Codice: Seleziona tutto

'Option VBASupport 1
SUB EsportaComeUnicoFilePdfTuttiFogliVisibili
Doc  = ThisComponent
Url = Doc.GetUrl()		'Acquisisco l'URL del file nel computer in uso

REM --- Dall'URL ottenuto automaticamente ricavo "URL SENZA il NOME FILE" del file della macro ---
For X = Len(Url) To 1 Step -1
If InStr(X , Url , "/") <> 0 Then
PosizioneUltimaBarra = X
X=0
End If
Next
UrlSenzaNomeFile = Left(url , PosizioneUltimaBarra

Non capisco il tuo problema, non devi fare altro che COPIARE una delle 2 macro di lucky nel tuo file, la parte che non sai se inserire serve a ricavare il percorso del tuo file .ods e ad usarlo per creare un percorso di destinazione del file esportato in pdf, in questo modo anche cambiando pc o semplicemente la cartella del file ods non dovrai apportare modifiche alla macro per inserire il nuovo percorso.
erasmo84 ha scritto: martedì 19 dicembre 2023, 1:49 grazie per la disponibilita, provo ma ottengo sempre tutti i fogli non capisco dove sta l'errore.se vede la mia macro funziona solo che mi da 1 pagina invece devono essere 28. cole ve varie prove dei codici forniti ottengo sempre 54 pagine
Se ti da solo la prima pagina non mi sembra che funzioni... spiega meglio cosa vuoi fare perchè dalla macro che hai postato non si capisce bene, ci sono alcune parti che si ripetono e altre assolutamente inutili, quindi spiega come fai a decidere quali fogli esportare? sono sempre gli stessi(se è così si possono indicare nella macro) oppure........

Re: Macro esportazione fogli visibili in pdf

Inviato: mercoledì 20 dicembre 2023, 10:27
da erasmo84
buongiorno ho un file con tanti fogli che si compilano, ho il primo foglio di gestione con pulsanti, la macro di riferimento in alto deve fare questo:
chiudere tutti i fogli aperti in quel momento e aprire i fogli che voglio esportare in pdf, esportare i fogli e salvarli in pdf e poi una volta finito il salvataggio chiudere tutto e lasciare aperto il foglio home. grazie per tutto (ovviamente il pdf deve avere un nome dato da me con data e ora)

Re: Macro esportazione fogli visibili in pdf

Inviato: mercoledì 20 dicembre 2023, 10:35
da Gaetanopr
erasmo84 ha scritto: mercoledì 20 dicembre 2023, 10:27la macro di riferimento in alto deve fare questo:
chiudere tutti i fogli aperti in quel momento e aprire i fogli che voglio esportare in pdf
Secondo te come facciamo a sapere quali fogli vuoi esportare? come viene deciso quali fogli esportare, la macro esegue istruzioni ben precise non può sapere quali fogli esportare se non viene indicato, nel mio precedente messaggio ti avevo chiesto se fossero sempre gli stessi fogli oppure no e da cosa dipende.

Re: Macro esportazione fogli visibili in pdf

Inviato: giovedì 28 dicembre 2023, 11:28
da erasmo84
buone feste a tutti, ho provato a sostituire copiando la formula ma mi esporta sempre tutti i fogli. allego la formula se potete dirmi dove sbaglio perfavore p.s. se voglio mettere una cartella specifica dove metto il percorso?

Codice: Seleziona tutto

Option VBASupport 1
SUB EsportaComeUnicoFilePdfTuttiFogliVisibili
Doc  = ThisComponent
Url = Doc.GetUrl()		'Acquisisco l'URL del file nel computer in uso

REM --- Dall'URL ottenuto automaticamente ricavo "URL SENZA il NOME FILE" del file della macro ---
For X = Len(Url) To 1 Step -1
If InStr(X , Url , "/") <> 0 Then
PosizioneUltimaBarra = X
X=0
End If
Next
UrlSenzaNomeFile = Left(url , PosizioneUltimaBarra)

REM --- NASCONDO il foglio/i interessati
Sheets("DISTRI").Visible = False 'Con Option VBASupport 1
Sheets("REGISTRO CAMBI").Visible = False 'Con Option VBASupport 1
Sheets("REGISTRO ODS").Visible = False 'Con Option VBASupport 1
Sheets("PRONTO IMPIEGO").Visible = False 'Con Option VBASupport 1
Sheets("SOSTITUZIONI VAIRA").Visible = False 'Con Option VBASupport 1
Sheets("ELENCO").Visible = False 'Con Option VBASupport 1
Sheets("TURNAZIONI").Visible = False 'Con Option VBASupport 1
Sheets("GESTIONE TURNI").Visible = False 'Con Option VBASupport 1
Sheets("MUTE").Visible = False 'Con Option VBASupport 1
Sheets("MONTANTI").Visible = False 'Con Option VBASupport 1
Sheets("GRADI").Visible = False 'Con Option VBASupport 1
Sheets("RIEPILOGATIVO PATENTI ARMERIA").Visible = False 'Con Option VBASupport 1
Sheets("BOX CERN E PROT").Visible = False 'Con Option VBASupport 1
'Doc.Sheets(1).IsVisible = False 		'Per Nr indice del foglio 0=PrimoFoglio
'Doc.Sheets.GetByName("DISTRI").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("REGISTRO CAMBI").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("REGISTRO ODS").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("PRONTO IMPIEGO").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("SOSTITUZIONI VAIRA").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("TURNAZIONI").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("GESTIONE TURNI").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("MUTE").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("MONTANTI").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("GRADI").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("RIEPILOGATIVO PATENTI ARMERIA").IsVisible = False	'Per nome del foglio
'Doc.Sheets.GetByName("BOX CERN E PROT").IsVisible = False	'Per nome del foglio
'STOP  'Per verifica se fogli interessati vengono nascosti

REM --- Nome del file esportato in pdf ---
NomeDelfile =  "ODS_HOTEL_" & Format(Now(), "dd-mm-yyyy") & ".pdf"
REM --- Se il nome del file = stringa nulla esci dalla procedura ----------------------
If NomeDelFile = "" Then Exit Sub

REM --- Se il nome del file esiste già chiedi se sovrascrivere -------------------------
If FileExists(PercorsoSalvataggio & NomeDelFile) Then
REM --- Richiesta conferma di procedere --- Scegliendo "Annulla" esci dalla procedura -----
	If Msgbox("ATTENZIONE : Esiste già un file con lo stesso nome nel percorso indicato." & CHR$(10) & _
	CHR$(10) & "                                Vuoi sovrascrivere ?",33,filename) =2 then exit sub
	end if

REM --- Esportazione in pdf ---
Dim FilePDF(1) As New com.sun.star.beans.PropertyValue
FilePDF(0).Name = "Overwrite"
FilePDF(0).Value = True 
FilePDF(1).Name = "FilterName"
FilePDF(1).Value = "calc_pdf_Export"
PercorsoDiSalvataggio = UrlSenzaNomeFile & NomeDelfile
Doc.storeToURL(PercorsoDiSalvataggio, FilePDF())

REM --- VISUALIZZO il foglio/i interessati
' Mostro il foglio/i visibile che non volevo fosse presente
Sheets("DISTRI").Visible = True 'Con Option VBASupport 1
Sheets("REGISTRO CAMBI").Visible = True 'Con Option VBASupport 1
Sheets("REGISTRO ODS").Visible = True 'Con Option VBASupport 1
Sheets("PRONTO IMPIEGO").Visible = True 'Con Option VBASupport 1
Sheets("SOSTITUZIONI VAIRA").Visible = True 'Con Option VBASupport 1
Sheets("ELENCO").Visible = True 'Con Option VBASupport 1
Sheets("TURNAZIONI").Visible = True 'Con Option VBASupport 1
Sheets("GESTIONE TURNI").Visible = True 'Con Option VBASupport 1
Sheets("MUTE").Visible = True 'Con Option VBASupport 1
Sheets("MONTANTI").Visible = True 'Con Option VBASupport 1
Sheets("GRADI").Visible = True 'Con Option VBASupport 1
Sheets("RIEPILOGATIVO PATENTI ARMERIA").Visible = True 'Con Option VBASupport 1
Sheets("BOX CERN E PROT").Visible = True 'Con Option VBASupport 1
'Doc.Sheets(1).IsVisible = True 				'Per Nr indice del foglio 0=PrimoFoglio
'Doc.Sheets.GetByName("DISTRI").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("REGISTRO CAMBI").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("REGISTRO ODS").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("PRONTO IMPIEGO").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("SOSTITUZIONI VAIRA").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("TURNAZIONI").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("GESTIONE TURNI").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("MUTE").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("MONTANTI").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("GRADI").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("RIEPILOGATIVO PATENTI ARMERIA").IsVisible = True	'Per nome del foglio
'Doc.Sheets.GetByName("BOX CERN E PROT").IsVisible = True	'Per nome del foglio


REM ----- Avviso di fine lavoro ------------------------------------
Msgbox "Operazione eseguita con successo.", 0, "Esportazione PDF:"


    Sheets("HOME").Visible = True
    Sheets("HOME").Activate
    Sheets("HOTEL 379 - HOTEL 145").Visible = True
    Sheets("HOTEL 20B").Visible = True
    Sheets("HOTEL 21").Visible = True
    Sheets("HOTEL 536").Visible = True
    Sheets("HOTEL 299").Visible = True
    Sheets("HOTEL 27").Visible = True
    Sheets("HOTEL 322 - RDS").Visible = true
    
exitHandler:
        Exit Sub
errHandler:
        MsgBox "Non ho potuto salvare il file PDF"
Resume exitHandler

  

End Sub

Re: Macro esportazione fogli visibili in pdf

Inviato: giovedì 28 dicembre 2023, 15:50
da Gaetanopr
Continui a chiedere senza rispondere per l'ennesima volta, non funziona così per me argomento chiuso.

Re: Macro esportazione fogli visibili in pdf

Inviato: venerdì 29 dicembre 2023, 16:59
da erasmo84
scusami, non ho capito cosa devo risponderti. nella formula i fogli che devono essere salvati sono quelli con H e Montanti e distri. scusami :knock:

Re: Macro esportazione fogli visibili in pdf

Inviato: martedì 2 gennaio 2024, 19:26
da lucky63
erasmo84 ha scritto: venerdì 29 dicembre 2023, 16:59 devono essere salvati sono quelli con H e Montanti e distri
.
Test - Macro - Esporta solo i vari foglio H e MONTANTI e DISTRI.png
Test - Macro - Esporta solo i vari foglio H e MONTANTI e DISTRI.png (45.65 KiB) Visto 1527 volte
.

Re: Macro esportazione fogli visibili in pdf

Inviato: venerdì 5 gennaio 2024, 8:30
da erasmo84
mi da un errore :

Codice: Seleziona tutto

Errore di runtime BASIC.
'1'
Si è verificata un'eccezione 
Type: com.sun.star.io.IOException
Message: SfxBaseModel::impl_store <ODS_HOTEL_05-01-2024.pdf> failed: 0x81a(Error Area:Io Class:Parameter Code:26).

alla riga 63.
grazie per il supporto

Re: Macro esportazione fogli visibili in pdf

Inviato: venerdì 5 gennaio 2024, 10:55
da erasmo84
risolto l'errore, ma nel test funziona ora devo capire perche a me non funziona mi esporta sempre tutto ed è strano. cmq grazie