Condividi:        

Salvare 1 foglio con nome particolare

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 1 foglio con nome particolare

Postdi Alea » 17/01/12 09:03

Buon giorno a tutti
oggi chiedo un altro aiutino per completare la mia opera ( e anche la vostra :lol: )

Ho la necessità di salvare il foglio che si chiama "OFFERTA" in una cartella "quasi" precisa con un nome particolare prendendo dei valori da altri fogli.
Praticamente il nome è composto in questo modo:
nome ditta + "_Offerta_nr_" + il codice dell'offerta + "_del_" + data

1. Il "nome ditta" si trova nel foglio Riepilogo nella cella K3
2. il "codice dell'offerta" si trova nel foglio OFFERTA nella cella C58 però credo che sorga un problema: il codice è scritto in questo modo "5/12/8000". so per certo che nei nomi dei file il carattere "/" non viene supportato. Si può sostituire con "_".
3. la "data" si trova nel foglio Riepilogo nella cella G1

Praticamente il nome dovrebbe essere così: PINCO_Offerta_nr_25_12_8065_del_17.01.2012.xls

Per quanto riguarda la cartella di salvataggio forse chiedo troppo (non so se si può fare)
Questa ad esempio è la cartella origine del file in questione:
U:\2_CONTRATTI\IT.12.8606_Palazzine-Resid\03-CALCOLO\02-XLS

il file dovrebbe praticamente cambiare cartella e andare in questa: 04-OFFERTE_CONTRATTO
lasciando invariato questo percorso: U:\2_CONTRATTI\IT.12.8606_Palazzine-Resid\
quindi tornare indietro di "2 cartelle" ed entrare in 04-OFFERTE_CONTRATTO

Questa operazione è data dal fatto che questa parte di cartella:
IT.12.8606_Palazzine-Resid
mi cambia ogni volta da progetto a progetto.

Credete sia possibile farlo?

Grazie intanto
Ciao
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Sponsor
 

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 17/01/12 09:17

Ok per il nome file (un po' lungo ma se a te sta bene codì...)
per quanto riguarda il percorso dovresti specificare qual'è la "radice" parte fissa del percorso che da quanto dici dovrebbe essere
"U:\2_CONTRATTI\"
in quanto
"IT.12.8606_Palazzine-Resid\"
è variabile, ma chi assegna o dove si trova questa variabile?

E' preferibile anche che indichi un percorso-destinazione completo
perché non è chiaro quando dici "tornare indietro" :eeh:

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 17/01/12 09:35

Questa variabile:
"IT.12.8606_Palazzine-Resid\"
purtroppo viene decisa e scritta nel momento in cui dobbiamo fare un nuovo progetto.

Nella cartella fissa "U:\2_CONTRATTI\" abbiamo delle sotto-cartelle dei progetti:
IT.04.8132_Università_L'Aquila
IT.08.8433_CityLife_AMIS-Milano
IT.11.8681_Edif-Residenz_Verona
IT.12.8606_Palazzine-Resid_MONCALIERI
ecc...

A sua volta dentro ogni progetto abbiamo:
00-CONTATTI
01-MAIL
02-DISEGNI
03-CALCOLO
04-OFFERTE_CONTRATTO
ecc..

Dentro a 03-CALCOLO ( e \02-XLS ) abbiamo il file excel che deve essere salvato in 04-OFFERTE_CONTRATTO

Per "tornare indietro" intendevo dire che per salvare il file nella cartella "04" bisogna "uscire" dalla cartella "02-XLS" - uscire dalla cartella "03-CALCOLO" ed entrare nella cartella "04-OFFERTE_CONTRATTO".
Tipo i comandi dos :
cd..
cd..
cd 04-OFFERTE_CONTRATTO

forse sono riuscito a spiegare meglio.
Fammi sapere
Ciao
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 17/01/12 10:30

Già è tutto più chiaro

L'unica cosa è che nel mio file non esiste un foglio di nome "Offerta" (ovvero esiste ma è nascosto) e per questo motivo
veniva importato un foglio con Nome "Offerta2" con i dati prelevati dalle precedenti macro
Potrei fare rifermento a questo, poi eventualmente modificherai il nome a tuo piacimento, va bene?

Inoltre il foglio "offerta" deve rimanere nella cartella del programma (File CB-Tech.xls)?

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 17/01/12 10:59

Ti allego il mio file CB-TECH dove ho modificato il nome del foglio "offerta" nascosto così hai tutti i riferimenti giusti.

CB-Tech_Clienti_2011-VI.xls 3.0 MB http://www.megaupload.com/?d=VD1SS7BK


Il file CB-TECH deve restare completo nella cartella 03-CALCOLO\02-XLS
il nuovo file con solo il foglio "OFFERTA" deve andare in 04-OFFERTE_CONTRATTO
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 17/01/12 11:05

Non ho ancora scricato il file
ma ti invio la macro (devi solo cambiare il nome del foglio "Offerte2" con il nome che hai)

Il programma rileva il percorso iniziale (uno di questi)
IT.04.8132_Università_L'Aquila
IT.08.8433_CityLife_AMIS-Milano
IT.11.8681_Edif-Residenz_Verona
IT.12.8606_Palazzine-Resid_MONCALIERI

pertanto non è necessario digitarlo manualmente

Codice: Seleziona tutto
Sub SalvaOff()
Perc = ThisWorkbook.Path
Slash1 = InStrRev(Perc, "\")
PercF = Left(Perc, Slash1 - 1)
Slash2 = InStrRev(PercF, "\")
PercF = Left(PercF, Slash2) & "04-OFFERTE_CONTRATTO"
Ditta = Worksheets("Riepilogo").Range("K3").Value
Offerta = "_Offerta_" & Replace(Worksheets("Offerta2").Range("C58").Value, "/", "_")
Data = "_del_" & Replace(Worksheets("Riepilogo").Range("G1").Value, "/", ".")
NFile = Ditta & Offerta & Data & ".xls"
    Sheets("Offerta2").Select
    Sheets("Offerta2").Copy
    ChDir PercF
    ActiveWorkbook.SaveAs Filename:=PercF & "\" & NFile
    ActiveWindow.Close
End Sub


Vedi se riesci da solo altrimenti posta ancora

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 17/01/12 11:26

OTTIMO è praticamente perfetta.

Grazie mille Flash
Buon pranzo
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 17/01/12 13:39

Se adesso invece che salvare il foglio OFFERTA lo volessi stampare?
Per stamparlo in formato cartaceo lancio semplicemente il comando stampa di Excel.
Ma se lo voglio stampare in pdf mantenendo lo stesso nome?
E' possibile?

Grazie
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 17/01/12 14:12

Devi inserire il codice prima della chiusra del file
il codice di stampa (su stampante predefinta) è
Codice: Seleziona tutto
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Per la stampa .pdf dipende dal programma che converte in pdf
Trovi qui l'argomento già trattato e risolto con PdfCreator

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 17/01/12 14:38

Ho provato questo codice per la stampante predefinita e funziona:
Codice: Seleziona tutto
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

solo che nel foglio OFFERTA che stampo ci sono 4 pagine che vengono stampate su 4 fogli diversi.
Ora, se si può impostare che la stampante mi stampi fronte/retro sarebbe ottimo, altrimenti non c'è nessun problema. Come ho scritto prima posso tranquillamente lanciare il comando di stampa di Excel.

Ora vado a dare un'occhiata per la stampa in pdf.

grazie
Caio
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Anthony47 » 17/01/12 15:29

Solo per curiosita', avevo elaborato questa macro per il quesito di brikki (derivata da quanto scritto nel link http://www.excelguru.ca/content.php?161), che poi non ho pubblicato perche' il quesito e' stato risolto autonomamente:
Codice: Seleziona tutto
Sub macroPrintPDF()
'QUESTA FUNZIONA, le altre sono tutte prototipi manipolati
'Le righe marcate <<< e >>> sono alternative; quelle >>> richiedono
'   di impostare il riferimento alla libreria PDFCreator (menu /Riferimenti /...)
'Come e' ora NON e' necessario avere il "Riferimento" a pdfcreator nel vba
'
'Dim objPDFCreator As PDFCreator.clsPDFCreator '>> Early Bind
Dim objPDFCreator  '<<<  Late Bind
Dim Perc As String
Dim Nome As String
'   
Nome = "mona.pdf" 'Range("B6").Value
Perc = ThisWorkbook.Path & "\"
'
On Error Resume Next
    If Dir(Perc & Nome) = Perc & Nome Then Kill (Perc & Nome)
    Shell "taskkill /f /im PDFCreator.exe", vbHide
Application.Wait (Now + TimeValue("0:00:05"))
On Error GoTo 0
'
'Set objPDFCreator = New PDFCreator.clsPDFCreator '>>>
Set objPDFCreator = CreateObject("PDFCreator.clsPDFCreator") '<<
aaa1 = objPDFCreator.cProgramIsRunning

With objPDFCreator
.cStart "/NoProcessingAtStartup"
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = Perc
.cOption("AutosaveFilename") = Nome
.cOption("AutosaveFormat") = 0
aaa = .cOption("AutosaveFilename")
.cVisible = False
.cClearCache
End With
'
ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator"   'stampa "Foglio"
objPDFCreator.cPrinterStop = False

'attesa disponibilita' file finale
Do
   DoEvents
Loop Until Dir(Perc & Nome) = Nome
'
'clear finale oggetto e kill processo
Set objPDFCreator = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
'
End Sub

Le variabili Nome e Perc ovviamente possono essere usate per contenere altri valori.

Una volta ottenuta la stampa su pdf, la stampa su carta sara' possibile fronte e retro se la stampante usata supporta la prestazione; altrimenti si possono prima stampare i fogli dispari e poi quelli pari (vale anche per le stampe fatte manualmente da excel a carta).

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

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 17/01/12 15:50

Ciao Anthony
ho dato anch'io un'occhiata al link per le stampe in pdf. Ho fatto delle prove ma mi è molto difficile raggiungere il risultato desiderato perché non riesco ad inserire nel codice il percorso e il nome del file.
Provando sul codice di Flash per salvare il file sono riuscito ad aggiungere anche la creazione del pdf: posto il codice
Codice: Seleziona tutto
Public Sub SalvaOffFLASH()
Perc = ThisWorkbook.Path
Slash1 = InStrRev(Perc, "\")
PercF = Left(Perc, Slash1 - 1)
Slash2 = InStrRev(PercF, "\")
PercF = Left(PercF, Slash2) & "04-OFFERTE_CONTRATTO"
Ditta = Worksheets("Riepilogo").Range("K3").Value
Offerta = "Offerta_nr_" & Replace(Worksheets("OFFERTA").Range("C58").Value, "/", "_")
Data = "_del_" & Replace(Worksheets("Riepilogo").Range("G1").Value, "/", ".")
NFile = Offerta & "_" & Ditta & Data & ".xls"
    Sheets("OFFERTA").Select
    Sheets("OFFERTA").Copy
    ChDir PercF
    ActiveWorkbook.SaveAs Filename:=PercF & "\" & NFile
    Application.ActivePrinter = "PDFCreator su Ne00:"
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""PDFCreator su Ne00:"",,TRUE,,FALSE)"
    ActiveWindow.Close
End Sub


In questo modo riesco a salvare il file nel percorso giusto e con il nome giusto (macro di Flash) e a stampare in pdf il foglio interessato utilizzando lo stesso nome, però mi chiede di nuovo il percorso. Si riesce ad inserire il percorso anche al pdf?
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 17/01/12 17:13

Devi andare nelle impostazioni di PdfCreator e impostare il percorso dove "stamperai" tutti i file .pdf

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 17/01/12 19:08

Oppure
se i file vanno inseriti nella stessa cartella di Offerta.xls

puoi usare questo codice (inserito nella macro completa)
Codice: Seleziona tutto
Sub SalvaOff()
'StPdf = Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n " & """Adobe PDF""")
StPdf = Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n PDFCreator")
Perc = ThisWorkbook.Path
Slash1 = InStrRev(Perc, "\")
PercF = Left(Perc, Slash1 - 1)
Slash2 = InStrRev(PercF, "\")
PercF = Left(PercF, Slash2) & "04-OFFERTE_CONTRATTO"
Ditta = Worksheets("Riepilogo").Range("K3").Value
Offerta = "_Offerta_" & Replace(Worksheets("Offerta").Range("C58").Value, "/", "_")

Data = "_del_" & Replace(Worksheets("Riepilogo").Range("G1").Value, "/", ".")
NFile = Ditta & Offerta & Data & ".xls"
FilePdf = Ditta & Offerta & Data & ".pdf"
Sheets("Offerta").Select
Sheets("Offerta").Copy
ChDir PercF
ActiveWorkbook.SaveAs Filename:=PercF & "\" & NFile
PercNFile = PercF & "\" & FilePdf
ActiveWindow.SelectedSheets.PrintOut , Copies:=1, Collate:=True, PrToFileName:=PercNFile
ActiveWindow.Close
StDef = Shell("C:\PrintDefault.bat")  '<<<<< Attenzione qui: devi creare un file .bat come descritto (*)
End Sub


(*) Nota: devi creare un file .bat per ripristinare la stampante di default
apri un file testo
scrivi questo codice
Codice: Seleziona tutto
RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "Nome tua stampante"

Salvi il file sulla Root di C:\ come PrintDefault.txt
poi con explorer su C:\ e rinomini il file in PrintDefault.bat
-----------
Se ti dà un errore di Font devi andare sulle proprietà della stampante pdf (preferenze stampa) e togliere l'opzione a:
"Utilizza solamente Font di sistema, non utilizzare Font del documento"


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Anthony47 » 17/01/12 22:51

Mi sono perduto e anche dopo il messaggio di Flash (vedi sopra) non capisco piu' se la stampa pdf e' ancora un obiettivo, se e' risolto o non ancora. Se serve un tentativo di contribuzione sullo specifico argomento ditemelo.

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

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 18/01/12 09:07

Giorno a tutti
sta mattina ho provato il nuovo codice di Flash.
- viene eseguito il salvataggio del file con il nome "giusto";
- viene creato il pdf del file con il nome "giusto";
- entrambi i file sono nella cartella giusta;

nel momento di aprire il file pdf compare un errore:
Immagine

Ho provato ad andare nelle proprietà della stampante pdf ma non ho trovato l'opzione da spuntare che mi hai suggerito:
Immagine

Hai qualche suggerimento? magari ho cercato l'opzione da spuntare nel posto sbagliato.

Ciao intanto
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 18/01/12 09:36

Quel tipo di errore non è dovuto ai font e quindi non occorre andare in proprietà stampante pdf
se erano i font da settare non saresti riuscito a creare il file.pdf

Quel tipo di errore all'apertura del file dipende da questo codice che qui ho commentato
Codice: Seleziona tutto
ActiveWindow.SelectedSheets.PrintOut , Copies:=1, Collate:=True  ', PrToFileName:=PercNFile

Così facendo viene richiesto il percorso ma vedi nota (*)
Quindi penso che il codice vba crei un file pdf anomalo proprio per questo motivo.

(*) A questo punto conviene che inserisci il percorso e la creazione automatica del file, nelle impostazioni di PdfCreator, impostazioni che non so indicarti in quanto non ho PdfCreator ma quando, tempo fa, lo usai, il programma funzionava regolarmente.
Mi sembra che sia nella scheda Impostazioni Periferica o in Avanzate (dell'immagine a sinistra)


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Alea » 18/01/12 11:10

Ho fatto altre 2 prove con stampanti pdf diverse.
prova 1:
Codice: Seleziona tutto
StPdf = Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n " & """Adobe PDF""")
'StPdf = Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n PDFCreator")

in questo codice ho invertito le righe 2 e 3 e mi crea il file nella cartella giusta ma resta il problema che non si riesce ad aprire il file.

prova 2:
Codice: Seleziona tutto
StPdf = Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n " & """Adobe PDF Converter""")
'StPdf = Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n PDFCreator")

in questo codice ho usato un programma diverso: Adobe PDF Converter
in questa maniera si blocca qui:
Codice: Seleziona tutto
ActiveWindow.SelectedSheets.PrintOut , Copies:=1, Collate:=True, PrToFileName:=PercNFile

dandomi questo errore
Immagine
che era quello che intendevi in alcuni post precedenti.

Ora nelle impostazioni della stampante ho tolto lo spunta da "Do not send fonts to Adobe Pdf"
Immagine
ma non riesco a trovare l'opzione "utilizza solamente Font di sistema" come avevi suggerito.
Per caso riesci a capire dove sta il problema?
Grazie
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: Salvare 1 foglio con nome particolare

Postdi Flash30005 » 18/01/12 12:46

E' la stessa opzione che hai tolto
solo che in inglese non c'è la seconda parte della frase in quanto sottointeso
Immagine

Uploaded with ImageShack.us

Ma in ogni caso non risolvi in quanto è la stringa-codice da me commentata che non funziona per i .pdf

Mentre penso che tu debba impostare un percorso fisso in adobe così non viene chiesto ogni volta e l'opzione è come riportato in figura
Immagine

Uploaded with ImageShack.us

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salvare 1 foglio con nome particolare

Postdi Anthony47 » 18/01/12 15:07

Partendo dalla macro di Flash del 17-1 mattina (viewtopic.php?f=26&t=94224&p=538991#p538853), a cui Alea aveva risposto "OTTIMO è praticamente perfetta", per avere il file pdf io suggerisco:
-modificare la macro di Flash aggiungendo in coda una call alla stampa
Codice: Seleziona tutto
Call macroPrintPDF1(PercF & "\", NFile)    '<<< AGGUNTA
End Sub

Inserire poi la macro che avevo suggerito il 17-1 pomeriggio (viewtopic.php?f=26&t=94224&p=538991#p538887) con la seguente variazione:
Codice: Seleziona tutto
Sub macroPrintPDF1(ByVal Perc As String, ByVal Nome As String)
'QUESTA E' DA RICHIAMARE COME UNA FUNZIONE DA ALTRA MACRO
' Es Call macroPrintPDF1 ("C:\Documenti\","pippo.pdf")
' modificate le righe ***
'
Dim objPDFCreator  '<<<  Late Bind

On Error Resume Next 
    If Dir(Perc & Nome) = Perc & Nome Then Kill (Perc & Nome)
'etc etc

Dalla riga On Error Resume Next si tratta della macro inizialmente suggerita; le modifiche consentono di "chiamare" la macro come fatto con la Call nella macro di Flash per ottenere la stampa su file tramite la stampante PDFCreator.

Un appunto sugli ultimi messaggi: non basta dire PrintToFile per avere la stampa di un file pdf, in genere quello che viene prodotto e' un file postscript.

Ciao a tutti

PS per Alea: c' e' un messaggio di Flash sopra il mio
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Salvare 1 foglio con nome particolare":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti