Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    4

    copiare foglio excel in nuova cartella

    Ciao a tutti, spero qualcuno mi possa aiutare, ho cercato in lungo e largo ma non trovo quello che mi serve.

    Ho una cartella excel (cartel1) con 12 fogli, al termine del lavoro svolto su un foglio qualsiasi dei 12, mi servirebbe tramite VBA riuscire a salvare il lavoro creando e salvando una nuova cartella (cartel2) che contenga solo il foglio attivo della cartella (cartel1) e possibilmente senza macro, o link di riferimento.

  2. #2

    Re: copiare foglio excel in nuova cartella

    Originariamente inviato da elemiah
    Ciao a tutti, spero qualcuno mi possa aiutare, ho cercato in lungo e largo ma non trovo quello che mi serve.

    Ho una cartella excel (cartel1) con 12 fogli, al termine del lavoro svolto su un foglio qualsiasi dei 12, mi servirebbe tramite VBA riuscire a salvare il lavoro creando e salvando una nuova cartella (cartel2) che contenga solo il foglio attivo della cartella (cartel1) e possibilmente senza macro, o link di riferimento.
    Ciao !

    Prova a fare cosi':

    - registra una nuova macro, attivabile con una combinazione di tasti;
    - inserisci dentro la macro questo codice:
    codice:
       Dim p As String
       p = ActiveWorkbook.Path
       ActiveSheet.Copy    'crea una nuova cartella
       ActiveWorkbook.SaveAs p & "\Cartel2"  '...o il nome che preferisci...
       ActiveWorkbook.Close
    ...dovrebbe crearti una nuova cartella, copiarci il contenuto del foglio precedentemente attivo, e salvarla nella stessa directory di quella originaria, col nome specificato nel codice (io ho lasciato "Cartel2"...), indi chiuderla... e tornare alla cartella originaria.

    Ciao.
    IceCube_HT (VB6 fan Club)

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    4
    Grandissimo, proprio quello che mi serviva. Approffitto della vostra pazienza e bravura e chiedo, sempre se possibile:
    Il foglio che copio dalla cartella originale ha anche del codice vba inserito in una macro, facendo la copia naturalmente mi copia tutto compreso la macro. Cè modo di copiare solo la pagina (testo,imagini,e formatazioni) senza che nella copia ci siano delle macro? In pratica mi serve che la nuova pagina copiata sia uguale a quella originale ma senza macro.
    Grazie mille comunque per la risposta, è quello che mi serviva, se riesco anche ad evitare che chi riceve questa pagina possano usare le macro inserite sarebbe perfetto. Grazie ancora.

  4. #4
    Originariamente inviato da elemiah
    Grandissimo, proprio quello che mi serviva. Approffitto della vostra pazienza e bravura e chiedo, sempre se possibile:
    Il foglio che copio dalla cartella originale ha anche del codice vba inserito in una macro, facendo la copia naturalmente mi copia tutto compreso la macro. Cè modo di copiare solo la pagina (testo,imagini,e formatazioni) senza che nella copia ci siano delle macro? In pratica mi serve che la nuova pagina copiata sia uguale a quella originale ma senza macro.
    Grazie mille comunque per la risposta, è quello che mi serviva, se riesco anche ad evitare che chi riceve questa pagina possano usare le macro inserite sarebbe perfetto. Grazie ancora.
    Non credo si possa "eliminare" il codice dalla copia del foglio... almeno non esistono opzioni in tal senso nel comando Copy (che e' molto comodo proprio perche' in pratica "clona" il foglio su una nuova cartella)...

    La via piu' semplice e' forse includere il codice VBA in un modulo, anziche' direttamente nel foglio... come fa, del resto, il "registratore di macro".

    Ciao !
    IceCube_HT (VB6 fan Club)

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    4
    Grazie, di tutto. Se ci riesco ti faccio sapere.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    4
    Ciao, rieccomi dopo avere fatto una ricerca più precisa e grazie al tuo spunto, ho trovato del codice e l'ho modificato al mio bisogno, ecco di seguito le modifiche che ho aggiunto al tuo codice:

    Dim VBC As Object
    Dim p As String

    Sub CopiaFoglio()

    p = ActiveWorkbook.Path
    ActiveSheet.Copy 'crea una nuova cartella
    ActiveWorkbook.SaveAs p & "\Cartel2" '...o il nome che preferisci...

    'ActiveWorkbook.Close '...questo l'ho tolto per lasciare aperto il workbook

    ' questo il codice aggiunto

    With ActiveWorkbook.VBProject
    For Each VBC In .VBComponents
    If VBC.Type = 100 Then
    With VBC.CodeModule
    .DeleteLines 1, .CountOfLines
    .CodePane.Window.Close
    End With
    Else: .VBComponents.Remove VBC
    End If
    Next VBC
    End With

    End Sub


    perfetto, mi copia il foglio attivo senza le macro o moduli vba.

    Grazie del tuo spunto, senza non riuscivo a trovare la strada da seguire.

  7. #7
    Originariamente inviato da elemiah
    Ciao, rieccomi dopo avere fatto una ricerca più precisa e grazie al tuo spunto, ho trovato del codice e l'ho modificato al mio bisogno, ecco di seguito le modifiche che ho aggiunto al tuo codice:
    .........................
    With ActiveWorkbook.VBProject
    For Each VBC In .VBComponents
    If VBC.Type = 100 Then
    With VBC.CodeModule
    .DeleteLines 1, .CountOfLines
    .CodePane.Window.Close
    End With
    Else: .VBComponents.Remove VBC
    End If
    Next VBC
    End With
    .......................
    Non sapevo che VBA esponesse una collection .VBProject...
    Interessante... il codice che modifica... sé stesso !

    Ciao.
    IceCube_HT (VB6 fan Club)

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    516
    Scusate se mi intrometto, ma la discussione mi ha preso...
    Mi interesserebbe il codice di elemiah. Posso copiarlo?
    In più:
    Se nel foglio che la macro "mi duplica" in un nuovo file, volessi togliere
    anche dei pulsanti che ho creato, come posso fare?
    Grazie dell'aiuto.
    Siete fantastici!

  9. #9
    ciao a tutti sono nuovo e capisco poco di VBA ...ho copiato i codici di cui sopra e li ho adattati alle mie necessita',pero' non riesco a fare in modo che :
    il foglio attivo sia copiato avendo la possibilita' di dargli un altro nome file
    fare in modo che non mantenga i collegamenti delle formule presenti nei fogli e neanche le macro ...
    E' Possibile ????
    Grazie a chiunque voglia darmi una dritta
    Questo e' il codice che ho rappezzato dal vs. forum (FUNZIONA ma copia tutto compreso collegamenti )
    Dim VBC As Object
    Dim p As String

    Sub CopiaFoglio()

    ' (1)...
    With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = DDir '<<< Filtro per nome
    .Title = "Scegli la directory per il foglio " & ActiveSheet.Name
    .Show
    If .SelectedItems.Count = 0 Then 'directory non scelta
    MsgBox ("Scelta non effettuata, procedura abortita"): Exit Sub
    End If
    DDir = .SelectedItems(1) & "\"
    End With
    ' (2)...
    NewFName = DDir & FPrefix & ActiveSheet.Name & ".xlsx"
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=NewFName
    ActiveWorkbook.Close


    With ActiveWorkbook.VBProject
    For Each VBC In .VBComponents
    If VBC.Type = 100 Then
    With VBC.CodeModule
    .DeleteLines 1, .CountOfLines
    .CodePane.Window.Close
    End With
    End If
    Next VBC
    End With
    End Sub

  10. #10
    Probabilmente sto' scrivendo nel posto sbagliato .....ma se qualcuno ci capita ......potrebbe essere utile a tutti ....
    ho trovato una modifica che permette di copiare un singolo foglio di excel 2010 e salvarlo in una directory ....senza copiare anche tutti i collegamenti ai vari fogli di origine !!!! FUNZIONA




    MACRO FUNZIONANTE COPIA SINGOLO FOGLIO EXCEL SENZA FORMULE RIPORTANDO TUTTI I DATI DI TESTO (PERFETTO)



    Dim VBC As Object
    Dim p As String

    Sub CopiaFoglio()

    ' Seleziona la cartella destinazione in DDir
    With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = DDir '<<< Filtro per nome
    .Title = "Scegli la directory per il foglio " & ActiveSheet.Name
    .Show
    If .SelectedItems.Count = 0 Then 'directory non scelta
    MsgBox ("Scelta non effettuata, procedura abortita")
    Exit Sub
    End If
    DDir = .SelectedItems(1) & "\"
    End With

    'Copia il foglio in un'altro al volo
    'Converte tutte le formule del foglio nel
    'valore al momento calcolato
    ActiveSheet.Copy
    Cells.Select
    Selection.Copy
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select

    ' Salva il foglio
    NewFName = DDir & FPrefix & ActiveSheet.Name & ".xlsx"
    ActiveWorkbook.SaveAs Filename:=NewFName
    ActiveWorkbook.Close

    With ActiveWorkbook.VBProject
    For Each VBC In .VBComponents
    If VBC.Type = 100 Then
    With VBC.CodeModule
    .DeleteLines 1, .CountOfLines
    .CodePane.Window.Close
    End With

    End If
    Next VBC
    End With
    End Sub


    cIAO A TUTTI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.