Salvare un file xlsm



  • Salvare un file xlsm
    di Luigi (utente non iscritto) data: 02/11/2016 17:13:47

    Ciao,
    sto provando a far salvare più cartelle a partire da una "template"; all'interno di un ciclo, dopo aver copiato in una nuova cartella i fogli che mi interessano utilizzo l'istruzione
    ActiveWorkbook.SaveAs p & "" & c1
    dove p è una variable contenente il path e c1 una variabile contenente il nome della nuova cartella.
    Il template contiene della macro, ma le cartelle che si generano sono .xlsx.
    Ho provato, sulla base di esempi trovati in rete l'istruzione
    ActiveWorkbook.SaveAs p & "" & c1 & ".xlsm"
    ma l'esecuzione dà errore a questa riga.
    Dove sbaglio? Come posso ovviare?
    Grazie
     
    Sub Crea()
       Dim p As String
       Dim c1, c2, c3 As String
       For i = 1 To 100
          p = ActiveWorkbook.Path
          Sheets("Elenco").Select
          c1 = Cells(2 + i, 2)
          c2 = Cells(2 + i, 5)
          c3 = Cells(2 + i, 8)
          fogli = Array("DB", "Consist", "Param", "Sito")
          Sheets(fogli).Copy
          Sheets("DB").Select
          Cells(5, 3) = c1
          Cells(5, 6) = c2
          Cells(5, 9) = c3
          Sheets("DB").Visible = False
          Sheets("Consist").Visible = False
          Sheets("Param").Visible = False
          Worksheets("Sito").Name = c1
          ActiveWorkbook.SaveAs p & "" & c1 & ".xlsm"
          ActiveWorkbook.Close
       Next i
    End Sub



  • di alfrimpa data: 02/11/2016 17:21:38

    Ciao Luigi

    Il backslash non è ammesso nei nomi dei file; devi quindi sostituirlo (con REPLACE) con uno spazio o un underscore.

    Alfredo





  • di Luigi (utente non iscritto) data: 02/11/2016 18:00:22

    In realtà se nel codice non aggiungo
    & ".xlsm"
    funziona, anche in presenza di "".
    Infatti in quella versione ha funzionato, solo che mi ha generato dei semplici .xlsx e quindi le macro inserite nel foglio non funzionano.



  • di patel data: 02/11/2016 18:20:42

    ciao alfredo
    il viene dopo p ( ActiveWorkbook.Path) e quindi è necesssario.

    Luigi
    prova a lanciare la macro con F8 (step by step) in modo da controllare
    1) se si verifica ancora l'errore
    2) dove si verifica l'errore e perché





  • di Albatros54 data: 02/11/2016 18:48:18

    Prova cosi, se ho capito
     
    ActiveWorkbook.SaveAs p & "" & c1 & ".xlsm"
    
    ctiveWorkbook.SaveCopyAs p & "" & c1 & ".xlsm"






  • di Luigi (utente non iscritto) data: 03/11/2016 09:00:02

    Forse ho capito la causa, suggeritemi la soluzione.
    Nella nuova cartella copio 4 fogli, ma cosy non riesco a passare anche i moduli che contengono le macro, per cui l'errore al momento del salvataggio con estensione .xlsm secondo me è perché il tipo di file non è corretto (non essendoci macro perché dovrebbe essere un foglio 'con attivazione macro'?).
    Come faccio a copiare anche i moduli contenenti le macro? Forse devo agire al contrario: prima salvo tutto il file, dopo personalizzo il contenuto e cancello i fogli che non mi interessano?