Sdoppiaggio file



  • Sdoppiaggio file
    di Sbizzy data: 05/02/2015 11:26:28

    Ciao a tutti,

    ho un file excel composto da 4 fogli. Tramite il primo foglio vengono impostati dei valori come in un questionario e vengono elaborati dagli altri 3 fogli. Una volta terminato il questionario ho una macro che fa un copia-incolla speciale-valori dei fogli 2, 3 e 4 ed elimina il foglio1. A questo punto ho bisogno di una seconda macro che prenda il solo foglio4 e crei un file nuovo nella stessa cartella del file in esecuzione, lo nomini con il contenuto di una cella dello stesso foglio4 (cella A12 per l'esattezza) e infine elimini il foglio4 dal primo file.

    Alla fine avrò due file, uno con foglio2 e foglio3, l'altro con il foglio4 e nominato con il contenuto della cella A12.

    Grazie in anticipo a chi volesse aiutarmi. Ciao.



  • di lepat (utente non iscritto) data: 05/02/2015 12:46:02

    allega un file di esempio per test



  • di Sbizzy data: 09/02/2015 12:57:09

    Scusa il ritardo, ma la neve mi ha bloccato!

    Comunque il file non posso condivederlo perchè ha contenuti importanti. Ho messo un semplice file che ha i famosi quattro fogli. E' nominato file1 e contenuto in una cartella che ogni volta può variare. L'obbiettivo è avviare una macro che crei il file2 nella stessa cartella come indicato mentre del file1 restino solo foglio2 e foglio3.

    Grazie, ciao.



  • di Raffaele_53 (utente non iscritto) data: 10/02/2015 01:14:13

    A me sembra un controsenso
    Apro un file.xlsm elimino foglio1 salvo il foglio4 nella stessa cartella ed elimino foglio4

    Per identificare un qualsiasi foglio lo devo chiamare per "nome" oppure col "numero" di posizione
    Fallo ripetutamente e vedrai che forse Foglio4 non si crea (causa qualsiasi problema il codice non funziona più)
    Pertanto non elimino il foglio, l'ho cancello solamente. Vedi Tu se vuoi cancellare pure foglio1 c'è la riga idonea
     
    Sub salva()
    Dim file As String, Pat As String
    Pat = ThisWorkbook.Path & "" 'nella stessa  cartella dove è salvato
    file = Sheets("Foglio4").Cells(12, 1) & ".xlsx"
    Application.ScreenUpdating = False
        'Sheets("Foglio1").Select
        'Cells.ClearContents
    Sheets("Foglio4").Select
    ActiveSheet.Copy 'crea una nuova cartella
    ActiveWorkbook.SaveAs Pat & file
    ActiveWorkbook.Close
        Cells.ClearContents
    Application.ScreenUpdating = True
    End Sub



  • di Sbizzy data: 10/02/2015 13:28:37

    Provo a farti capire perchè non è un controsenso: io ho questo file che uso come modello; quando mi serve, ne creo una copia e la salvo nella cartella che desidero (ogni volta è diversa!). A questo punto compilo il foglio 1 con dei dati che vengono elaborati nei fogli 2, 3 e 4. Per completare il tutto dovrei: salvare i valori dei 3 fogli citati, eliminare il foglio 1, creare un secondo file nella stessa cartella in cui ho salvato prima la copia del modello con il contenuto del foglio, eliminare il foglio 4 dal file precedente. Cosi avrò il mio file modello intatto e pronto per essere utilizzato ancora, mentre nella cartella che ho scelto ho due file, uno con foglio 2 e 3, l'altro con foglio 4 (e nominato con la cella A12).

    Di fatto la macro viene applicata su quel file una volta soltanto (probabilmente farò in modo che venga eliminata ogni volta che l'avvio, tanto rimane salvata nel file "modello").

    Se ci sono soluzioni migliori della mia per ottenere questo risultato, ben vengano!



  • di Vecchio Frac data: 10/02/2015 13:33:39

    cit. "io ho questo file che uso come modello; quando mi serve, ne creo una copia e la salvo nella cartella che desidero"
    ---> Esistono i modelli di file per questi scopi (.xltx o .xltm). Considera l'ipotesi.





  • di Sbizzy data: 10/02/2015 14:02:54

    Il problema è che questo modello deve essere disponibile in rete...è possibile creare un modello in modo che serva più pc? Siccome ogni tanto dovrei aggiornarlo, vorrei fare l'operazione una volta sola e non sistemarlo per ogni pc utile!



  • di Vecchio Frac data: 10/02/2015 14:49:39

    I modelli sono file senza dati ma con la struttura preimpostata (in modo che non debba essere replicata ogni volta: colori nelle celle, formati bordo, formati carattere, numerici, ecc., testo predefinito, ecc.).
    Quando apri un modello .xlt* crei un documento vuoto pronto all'uso, ma basato sul modello, e ogni apertura da parte di ogni utente è indipendente: non viene in effetti aperto il file del modello, ne viene creata un copia nella memoria del pc che lo apre, e infatti Excel chiede di salvare il documento (proprio perchè è come se avesse fatto Nuovo documento).
    Quindi metti il modello in cartella condivisa e lasci che ogni utente possa accedervi: ogni utente avrà il proprio documento basato sul modello.
    Se devi modificare il modello, clic destro sul file .xlt*, Apri, e adesso sì, stai modificando il file di modello.





  • di Raffaele_53 (utente non iscritto) data: 10/02/2015 15:08:17

    Nella speranza di non fraintendere, Allora Tu apri il modello e lo salvi in una catella a Tua scelta.
    In questo momento il modello e salvo al suo posto originale e Tu stai lavorando sulla copia che hai creato come Xlsm.
    Alla fine desideri eliminare il foglio1, salvare il foglio4 come XLSX nella stessa cartella con il nome.
    Dopo eliminare il foglio4 e salvare solo i fogli 2/3 come XLSM
    Questo codice va inserito nel file Modello
     
    Sub salva()
    Dim file As String, Pat As String
    Pat = ThisWorkbook.Path & "" 'nella stessa  cartella dove è salvato
    file = Sheets("Foglio4").Cells(12, 1)
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Sheets("Foglio4").Select
    Sheets("Foglio1").Delete
    ActiveSheet.Copy 'crea una nuova cartella
    ActiveWorkbook.SaveAs Pat & file & ".xlsx"
    ActiveWorkbook.Close
    Sheets("Foglio4").Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    ActiveWorkbook.Close True
    End Sub



  • di Sbizzy data: 10/02/2015 16:09:18

    x Raffaele_53: la sembra che funzioni perfettamente!

    x Vecchio Frac: il modello creato in rete non viene visualizzato se faccio "nuovo --> modelli..." ma in compenso dopo averlo utilizzato una volta lo vedo nei "modelli usati di recente" sotto "crea cartella di lavoro vuota"!!! Un po' strano, ma funziona.

    Grazie a entrambi, ciao.