Unione celle e nome file



  • Unione celle e nome file
    di GruppoSIA data: 17/02/2016 18:22:50

    Buongiorno a tutti, leggendo i vari interventi sto imparando moltissimo, mi rendo conto che come dice la pubblicità pensavo di saper usare excel ma ...."mi sbagliavo".
    Non tutto però riesco a trovare ( o a capire ).
    In sostanza vorrei salvare un file utilizzando un nome file prelevato da una cella di un foglio di lavoro della cartella.
    Ho utilizzato la macro adatta a salvare a scegliere il nome file etc, ma non sò come dirgli di usare come nome il contenuto della cella, qualcuno è in grado di aiutarmi?
    Un altra cosa, piuttosto importante: Avevo inserito un post ( sbagliando perchè, non sapendolo, lo avevo inserito in più forum )ed ero riuscito a risolvere il mio problema utilizzando l'aiuto degli iscritti di entrambi i forum.
    Il questo mi aveva aiutato Alfredo, però stranamente non sono riuscito a ritrovare il mio intervento per segnalare che è risolto. Sapete come posso ricercare solo i miei interventi? Grazie.
    PS Se non riuscissi a ritrovare il post, grazie Alfredo



  • di patel data: 17/02/2016 18:39:26

    allega la tua macro e la modifichiamo





  • di alfrimpa data: 17/02/2016 19:19:10

    Ciao GruppoSIA

    Potresti provare con la macro qui sotto ammettendo che il nome del file sia in A1.

    Per quanto riguarda il risolto non preoccuparti.

    Alfredo
     
    Sub Macro1()
        Dim fPath As String
        fPath = ActiveWorkbook.Path
        ActiveWorkbook.SaveAs Filename:=fPath & "" & Range("a1").Value & ".xlsm", FileFormat:= _
            xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    End Sub
    





  • Salva alcuni fogli
    di GruppoSIA data: 23/02/2016 18:15:19

    Grazie Alfredo, con la tua macro, sono riuscito a dare il nome al file ,poi sono riuscito a salvare solo alcuni fogli di tutta la cartella con quel nome e salvare i tre fogli cosi ottenuti con il nome desiderato , in un file pdf, salvandolo nella directory voluta.
    Però devo ammettere che ho utilizzato dei mezzucci. In sostanza ho creato una macro che salva con il nome della cella, e poi stampa un elenco di tre fogli ( stampa non salva ) , poi ho utilizzato come stampante predefinita una stampante pdf ed ho ottenuto il file da inviare via e mail, però mi rendo conto che una cosa del genere in questo forum sia un offesa, ma non sono riuscito a risolvere un passaggio fondamentale, come faccioa dire al sistema di salvare solo alcuni fogli ? Poi in che directory salvare e magari come portarli in odf in quanche modo riuscirei a fare, ma come faccia a salvare con un nome file solo alcuni fogli?
    Ciao a tutti



  • di alfrimpa data: 23/02/2016 18:35:00

    Ciao GruppoSIA

    Non è possibile salvare in pdf un singolo foglio. Il comando Save agisce sull'intera cartella di lavoro e non sul singolo foglio.

    L'alternativa è aprire un nuovo file copiarvi il foglio che ti interessa esportare questo in pdf e chiudere senza salvare il precedente file di Excel (quello aggiunto).

    Non so se sono stato chiaro.

    Alfredo





  • di GruppoSIA data: 23/02/2016 19:02:32

    Quindi dovrei riuscire a salvare solo alcuni fogli di una cartella, unirli insieme con un nome e successivamente stamparlo un pdf. Provo a fare qualcosa



  • di Raffaele_53 data: 23/02/2016 19:40:04

    Ciao a tutti
    Da modificare e da provare
    Ps, Con Windows 10, non salvate in C, salvate solo dove avete i permessi di scrittura. 
     
    Sub Test()
    Dim ToPdf As Variant
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    ToPdf = Array("Foglio5", "Foglio8", "Foglio2")
    Sheets(ToPdf).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "C:????????????.pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False
    Set CurSH = Nothing
    Sheets("Foglio1").Select
    End Sub



  • di alfrimpa data: 23/02/2016 19:44:05

    Grazie Raffaele ho imparato una cosa nuova

    Alfredo





  • di GruppoSIA data: 26/02/2016 12:24:13

    Grazie ad Alfredo e Raffaele, ho provato entrambe le proposte e di per se funzionano benissimo, poi però ho tentato di metterle insieme e non ci sono riuscito.
    Della proposta di Alfredo ho bisogno di modificare alcuni parametri, il foglio dove si trova la cella da cui prelevare il nome si chiama "riepilogo" e la cella è la " E9".
    Però poi devo unire anche la proposta di Raffaele, perchè l'intento finale è quello di salvare un file con il nome prelevato dalla cella ( Alfredo) e poi salvarlo in formato pdf ( Raffaele ) in una directory precisa, che sò ad esempio c:clienti.
    Ci ho sbattuto un pò la testa, sono certo di esserci andato vicino, ma mi manca qualcosa che mi impedisce di chiudere, se posso approfittare per un altro aiutino....
    Saluti a tutti



  • di alfrimpa data: 26/02/2016 12:37:58

    Ciao GruppoSIA

    Potresti provare con la macro qui sotto che è quella di Raffaele (che saluto) che ho modificato inserendo come percorso di salvataggio c:clienti e va prendere il nome del file dalla cella E9.

    Alfredo  
     
    Sub Test()
    Dim ToPdf As Variant
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    ToPdf = Array("Foglio5", "Foglio8", "Foglio2")
    Sheets(ToPdf).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "C:clienti" & Range("E9").Value & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False
    Set CurSH = Nothing
    Sheets("Foglio1").Select
    End Sub






  • di GruppoSIA data: 26/02/2016 14:37:18

    Ciao Alfredo, mi da errore evidenziandomi il settore indicato con -----
    Vorrei inoltre se possibile capire due cose:
    Dove definisci il foglio da cui copiare la cella "E9"?
    Cosa significa questa sezione ?:
    Set CurSH = Nothing
    Sheets("Foglio1").Select



    Sub salvapdf1()
    Dim ToPdf As Variant
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    ToPdf = Array("Riepilogo", "CI3", "report")
    Sheets(ToPdf).Select
    ------- ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ------ "C:clienti" & Range("E9").Value & ".pdf", Quality:=xlQualityStandard, _
    ----- IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    ----- False
    Set CurSH = Nothing
    Sheets("Foglio1").Select
    End Sub



  • di alfrimpa data: 26/02/2016 15:00:28

    Ciao GruppoSIA

    Ho provato la tua macro ed a me funziona perfettamente.

    Ho ricreato la tua stessa identica situazione

    1) Ho creato la directory C:clienti
    2) In un file ho nominato tre fogli con "Riepilogo", "CI3" e "report"
    3) Nella cella E9 del Foglio1 ho inserito il nome con cui il file deve essere salvato (GruppoSIA)

    e non ho avuto nessun tipo di problema.

    Quanto alle tue domande

    "Dove definisci il foglio da cui copiare la cella "E9"? "

    qui: "C:clienti" & Sheets(1).Range("E9").Value & ".pdf"

    Cosa significa questa sezione ?:
    Set CurSH = Nothing
    Sheets("Foglio1").Select

    "Set CurSH = Nothing" è l'azzeramento della variabile oggetto CurSH dove abbiamo memorizzato il foglio attivo con l'istruzione "Set CurSH = ActiveSheet"

    Con "Sheets("Foglio1").Select" si selziona semplicemente il Foglio1.

    Alfredo
     
    Sub salvapdf1()
    Dim ToPdf As Variant
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    ToPdf = Array("Riepilogo", "CI3", "report")
    Sheets(ToPdf).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:clienti" & Sheets(1).Range("E9").Value & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
    Set CurSH = Nothing
    Sheets("Foglio1").Select
    End Sub
    






  • di GruppoSIA data: 26/02/2016 16:30:11

    Niente da Fare, anche provando a modificare fogli directory etc si ferma sempre sullo stesso punto indicato e mi da questo errore di runtime. Se poi entro nel debug mi fa vedere il tratto evidenziato in giallo che ti ho detto.
    Ti allego anche ultima versione di macro che ho provato, che poi è praticamente la tua tranne due modifiche

    Microsoft visual basic
    errore di run-time '-2147024773 (8007007b)':
    Documento non salvato

    fine debug

    Sub salvapdf1()
    Dim ToPdf As Variant
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    ToPdf = Array("Riepilogo", "CI3", "report")
    Sheets(ToPdf).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:clienti" & Sheets(1).Range("E9").Value & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
    Set CurSH = Nothing
    Sheets("riepilogo").Select
    End Sub






  • di alfrimpa data: 26/02/2016 17:18:28

    Ma hai creato la directory c:clienti?

    Il nome del file è nella cella E9?

    Che nome hai inserito in questa cella?

    Tieni presente che ci sono alcuni caratteri che non sono ammessi nei nomi dei file come ad esempio "/".

    Hai provato il mio file?

    Alfredo

    Allega il tuo file che ti da l'errore. Non modificarlo.





  • di GruppoSIA data: 27/02/2016 19:11:03

    01260216Rel 1.01



  • di alfrimpa data: 27/02/2016 22:05:37

    Non hai allegato il file

    Alfredo





  • di GruppoSIA data: 29/02/2016 11:27:14

    Intendi l'intero file con tutti i dati e le macro? E' grande e non credo possa interessare tutti, magari posso mandarlo al tuo indirizzo privato per poi magari estrne le parti di interesse generale e pubblicarle .



  • di alfrimpa data: 29/02/2016 11:42:25

    Ciao GruppoSIA

    Non posso inserire su un forum pubblico il mio indirizzo privato.

    Dimmi in quale foglio c'è la cella E9 in cui inserisci il nome con il quale il file dovrà essere salvato.

    Dimmi anche che nome hai inserito nella cella E9.

    Non occorre il file completo; non puoi fare un estratto in cui si riproduca l'errore?

    Hai provato con il mio file che ti ho allegato? Ti funziona? (A me si).

    Alfredo





  • di GruppoSIA data: 29/02/2016 12:39:21

    Ciao Alfredo , se può servire allego anche l'intero file ( e che non volevo far vedere le fesserie fatte con le mie macro )
    Dunque il foglio dove c'è la cella dove prelevare il nome del file è "riepologo" la cella dove prelevare il nome è la "C9" ( non la E9 come detto erroneamente in precedenza, ma in ogni caso anche modificandola il problema permane identico).
    Ho fatto una modifica alla tua macro, aggiungendo il nome del file, come riportato sotto, ma così facendo naturalmente , la macro crea un file pippo. pdf e non un nome prelevato dalla cella C9,
    Se ci sono difficoltà per prelevare il nome dalla cella potrebbe andare bene anche un "box" dove inserire il nome
    Ti inserisco le modifiche effettuate, la prima linea è la tua la seconda la mia con il path modificato

    "C:clienti" & Sheets(1).Range("C9").Value & ".pdf" con
    "C:clientipippo.pdf" & Sheets(1).Range("C9").Value & ".pdf"
     
    Sub salvapdf1()
    Dim ToPdf As Variant
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    ToPdf = Array("Riepilogo", "CI3", "report")
    Sheets(ToPdf).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:clientipippo.pdf" & Sheets(1).Range("C9").Value & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
    Set CurSH = Nothing
    Sheets("riepilogo").Select
    End Sub
    



  • di alfrimpa data: 29/02/2016 13:53:23

    Ciao GruppoSIA

    Riprova con la macro qui sotto (nel percorso avevi inserito anche il nome file pippo.pdf e non dovevi farlo).

    Nella cella C9 del foglio Riepilogo devi inserire solo il nome del file, senza l'estensione ".pdf" e senza i caratteri non ammessi nei nomi dei file come "/".

    Nella cella C9 di "Riepilogo" scrivi semplicemente "GruppoSIA" e vedi cosa succede.

    Alfredo
     
    Sub salvapdf1()
    Dim ToPdf As Variant
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    ToPdf = Array("Riepilogo", "CI3", "report")
    Sheets(ToPdf).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:clienti" & WorkSheets("Riepilogo").Range("C9").Value & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
    Set CurSH = Nothing
    Sheets("riepilogo").Select
    End Sub
    






  • di GruppoSIA data: 29/02/2016 15:12:11


    Non ho capito perchè, ma adesso funziona!
    Non l'ho capito perchè io avevo già provato le modifiche che mi hai suggerito, ma con me non aveva funzionato.
    Boh forse riconosce la voce del padrone

    Risolto, Grazie



  • di alfrimpa data: 29/02/2016 15:23:34

    Doveva funzionare! Forse sbagliavi qualcos'altro

    Comunque diamo a Cesare quel che è di Cesare: la macro non è mia ma di Raffaele_53 cui va la mia stima ed il mio saluto.

    Alla prossima.

    Alfredo





  • di GruppoSIA data: 29/02/2016 15:55:51

    Grazie Raffaele



  • di alfrimpa data: 29/02/2016 16:00:56

    Nella speranza che Raffaele ci legga vorrei chiedergli questo.

    Vorrei sapere perché dichiari una variabile oggetto (CurSH) nella quale memorizzi il foglio attivo e poi nella macro (a quel che capisco io) non ne fai uso.

    Alfredo
     
    Dim CurSH As Object
    Set CurSH = ActiveSheet
    
    Set CurSH = Nothing