VBA macro nome file



  • VBA - macro - nome file
    di piro (utente non iscritto) data: 25/07/2014 14:29:08

    Ciao
    io ho creato una macro in un file excel 2010 che deve copiare dei dati in un altro file excel.
    Ho creato questa macro in un template (quindi con il suo nome da template), solo che io vorrei prendere quel template, cambiare nome del file, compilare il file con il nuovo nome e da quest'ultimo copiare alcuni dati nel file di riassunto.
    Succede però che nel codice della mia macro compare il nome del file template (visto che l'ho creata da lì) e quando lo rinomino la macro non funziona.
    Come posso fare?
     
    Sub pirani100()
    '
    ' pirani100 Macro
    '
    
    '
        Workbooks.Open Filename:= _
            "N:16- SQ20116 - Tecnica6.6 Esecuzione proveLABORATORIO ASFALTITabella PROVE Miscele 2014.xlsx"
        Rows("196:196").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A196").Select
        Windows("MO.190, Miscele di asfalto + bitumi.xslm").Activate
        Range("S33:Y33").Select
        Selection.Copy
        Windows("Tabella PROVE Miscele 2014.xlsx").Activate
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Windows("MO.190, Miscele di asfalto + bitumi.xslm").Activate
        Range("S38:AO38").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Tabella PROVE Miscele 2014.xlsx").Activate
        Range("T196").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 3
        ActiveWindow.ScrollColumn = 4
        ActiveWindow.ScrollColumn = 5
        ActiveWindow.ScrollColumn = 6
        ActiveWindow.ScrollColumn = 7
        ActiveWindow.ScrollColumn = 8
        ActiveWindow.ScrollColumn = 9
        ActiveWindow.ScrollColumn = 10
        ActiveWindow.ScrollColumn = 11
        ActiveWindow.ScrollColumn = 12
        ActiveWindow.ScrollColumn = 13
        ActiveWindow.ScrollColumn = 14
        ActiveWindow.ScrollColumn = 15
        ActiveWindow.ScrollColumn = 16
        ActiveWindow.ScrollColumn = 17
        Windows("MO.190, Miscele di asfalto + bitumi.xslm").Activate
        Sheets("Interno bitumi").Select
        Range("W45:AA45").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Tabella PROVE Miscele 2014.xlsx").Activate
        Range("AT196").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("A196").Select
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Sheets("Interno Miscela").Select
        Range("A27").Select
    End Sub



  • di Grograman (utente non iscritto) data: 25/07/2014 14:50:37

    Anzitutto spiegare meglio lo scopo ^_^
    Secondo usando delle variabili stringa a cui dare i nomi dei file che vuoi usare, o ancora meglio usando delle variabili oggetto adeguate.

    Una sforbiciata del tuo codice:
     
    Option Explicit
    Sub pirani100()
    Dim sPath As String, sFile As String
    sPath = "N:16- SQ20116 - Tecnica6.6 Esecuzione proveLABORATORIO ASFALTI"
    sFile = "Tabella PROVE Miscele 2014.xlsx"
    
        Workbooks.Open Filename:=sPath & sFile
        Rows("196:196").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A196").Select
        Windows("MO.190, Miscele di asfalto + bitumi.xslm").Activate
        Range("S33:Y33").Select
        Selection.Copy
        Windows("Tabella PROVE Miscele 2014.xlsx").Activate
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Windows("MO.190, Miscele di asfalto + bitumi.xslm").Activate
        Range("S38:AO38").Copy
        Windows("Tabella PROVE Miscele 2014.xlsx").Activate
        Range("T196").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Windows("MO.190, Miscele di asfalto + bitumi.xslm").Activate
        Sheets("Interno bitumi").Select
        Range("W45:AA45").Copy
        Windows("Tabella PROVE Miscele 2014.xlsx").Activate
        Range("AT196").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Sheets("Interno Miscela").Select
    End Sub
    



  • di piro (utente non iscritto) data: 29/07/2014 11:28:46

    Grazie Grogaman.
    Sicuramente è più pulito però il mio problema è il file "MO.190, Miscele di asfalto+bitumi.xlsm"
    Spiego meglio lo scopo della mia macro.
    Io gestisco delle prove sugli asfalti. Per ogni materiale che prelievo ho risultati diversi, quindi creo, a partire dal template "MO.190, Miscele di asfalto+bitumi.xlsm", un file contenente i risultati. Io rinomino quest'ultimo per esempio in questo modo: "48201.234, Miscela SDA 8 del 280714 (8767)". In questo file io copio i dati che ho ottenuto con le prove, il foglio excel calcola i risultati, i quali compaiono sempre nelle stesse celle. Una volta terminato questo procedimento io voglio copiare le celle con i risultati principali nel foglio excel "Tabella PROVE Miscele 2014.xlsx" che è una specie di database che raccoglie i risultati.
    Il mio problema è che la macro è contenuta nel template e io vorrei che funzionasse anche quando rinomino il file e quindi non si chiama più "MO.190, Miscele di asfalto+bitumi.xlsm" ma con il nome nuovo.

    Spero sia più chiaro così. Si può fare qualcosa per questo problema?



  • di lepat (utente non iscritto) data: 29/07/2014 11:51:15

    non sarebbe più semplice allegare un file di esempio ? così si perde solo tempo.