Risultati da 1 a 9 di 9

Discussione: Macro per creare/aprire/chiudere file



  1. #1
    L'avatar di Sbarba
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Milano
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    0

    Macro per creare/aprire/chiudere file

    Buonasera a tutti,

    io ho un file così costituito:

    colonna A: codice prodotto
    colonna B: nome prodotto
    colonna c: nome di un file Excel (che verrà creato), codice prodotto_nome

    il mio desiderio è di sviluppare due macro.
    La prima deve creare un file per ogni prodotto, partendo da uno di base che si chiama "File_Base.xlsx", denominandolo "codice prodotto_nome.xlsx"
    La seconda deve aprire il primo file creato, aspettare 10 secondi, salvarlo e chiuderlo. Poi aprire il secondo e fare la stessa cosa, ecc ecc.

    Per la prima parte ho trovato il seguente codice:

    Codice: 
    Sub Crea_File()    Dim UR As Integer, I As Integer, WB1 As Workbook, WS1 As String, Nome_Precedente As String, Nome_Modello As String
          
        Set WB1 = ActiveWorkbook
        WS1 = WB1.ActiveSheet.Name
        UR = Range("A" & Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
        Nome_Precedente = ActiveWorkbook.Name
        Nome_Modello = "File_Base.xlsx"
        Workbooks.Open Filename:=Nome_Modello
    
    
        For I = 2 To UR
            ActiveWorkbook.SaveAs Filename:= _
                WB1.Sheets(WS1).Cells(I, 1) & "_" & WB1.Sheets(WS1).Cells(I, 2) & ".xls", FileFormat:=xlOpenXMLWorkbook, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
        Next I
        
        ActiveWindow.Close
        Windows(Nome_Precedente).Activate
        
        Application.ScreenUpdating = True
        MsgBox "Elaborazione Effettuata.  Creati " & I - 2 & " file"
        Set WB1 = Nothing
    End Sub
    inizialmente funzionava, ma ora mi dice che non trova il file "File_Base.xlsx", che è nella stessa cartella in cui ho il file in cui ho inserito il codice.

    Per la seconda macro ho trovato:

    Codice: 
    Public Sub mApriFile()
    
    On Error GoTo RigaErrore
    
    
        Dim sh As Worksheet
        Dim wrk As Workbook
        Dim sPath As String
        Dim sNomeFile As String
        Dim lRisposta As Long
    
    
        sPath = "C:\Users\cartella\"
        
        Set sh = Worksheets("Foglio1")
    
    
        With sh
    
    
            sNomeFile = .Range("c2").Value & ".xlsx"
    
    
              Workbooks.Open (sPath & sNomeFile)
        
        Application.Wait Now + TimeValue("00:00:10")
        ActiveWorkbook.Save
        ActiveWindow.Close
    
    
        End With
    
    
    RigaChiusura:
        Set sh = Nothing
        Exit Sub
    
    
    RigaErrore:
        MsgBox Err.Number & vbNewLine & Err.Description
        Resume RigaChiusura
    
    
    End Sub
    che però mi apre/salva/chiude unicamente il primo file, il cui nome è in C2.


    Come potrei fare per sistemare la prima parte di codice e per fare sì che la seconda macro mi apra tutti i file elencati e non solo il primo (uno dopo l'altro, non tutti insieme)?

    Immagino poi che ci saranno sicuramente modi più eleganti ed efficaci di impostare quanto ho fatto. Non essendo capace di progettare macro, però, ho solo cercato e adattato quanto trovato alla mia situazione.

    Grazie in anticipo :43:

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Macro per creare/aprire/chiudere file

    Senza lavorare sul file è difficile ma prova così:
    Codice: 
    Public Sub mApriFile()
    
    
    On Error GoTo RigaErrore
    
    
        Dim sh As Worksheet
        Dim wrk As Workbook
        Dim sPath As String
        Dim sNomeFile As String
        Dim lRisposta As Long
        Dim uRiga as Long
    
    
        uRiga = Range("C" & Rows.Count).End(xlUp).Row
    
    
        sPath = "C:\Users\cartella\"
        
        Set sh = Worksheets("Foglio1")
    
    
        With sh
        For I = 2 To uRiga
            sNomeFile = .Range("c" & I).Value & ".xlsx"
            Workbooks.Open (sPath & sNomeFile)
    
    
            Application.Wait Now + TimeValue("00:00:10")
            ActiveWorkbook.Save
            ActiveWindow.Close
        Next I
        End With
    
    
    RigaChiusura:
        Set sh = Nothing
        Exit Sub
    Per quanto riguarda la prima domanda, la routine cerca di aprire un file che evidentemente non trova (File_Base.xlsx)

  3. #3
    L'avatar di Sbarba
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Milano
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    0

    Re: Macro per creare/aprire/chiudere file

    Grazie mille Rubik72,

    con un paio di piccoli accorgimenti fa esattamente quello che volevo.

    File_Base.xlsx è un file già esistente ed è nella stessa cartella del file in cui inserisco queste macro. Nelle prove che avevo fatto precedentemente lo trovava e onestamente non so cosa ho cambiato.

    Come potrei fare?

    Grazie di nuovo


    EDIT: modificando la macro così:

    Codice: 
    Sub Crea_File()    Dim UR As Integer, I As Integer, WB1 As Workbook, WS1 As String, Nome_Precedente As String, Nome_Modello As String, sPath As String
        
        sPath = "C:\Users\Sbarba\Desktop\xxx\"
            
        Set WB1 = ActiveWorkbook
        WS1 = WB1.ActiveSheet.Name
        UR = Range("A" & Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
        Nome_Precedente = ActiveWorkbook.Name
        Nome_Modello = "File_Base.xlsx"
        Workbooks.Open (sPath & Nome_Modello)
       
        For I = 2 To UR
            ActiveWorkbook.SaveAs Filename:= _
                WB1.Sheets(WS1).Cells(I, 1) & "_" & WB1.Sheets(WS1).Cells(I, 2) & ".xlsx", FileFormat:=xlOpenXMLWorkbook, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
        Next I
        
        ActiveWindow.Close
        Windows(Nome_Precedente).Activate
        
        Application.ScreenUpdating = True
        MsgBox "Elaborazione Effettuata.  Creati " & I - 2 & " file"
        Set WB1 = Nothing
    End Sub

    mi trova il file "File_Base.xlsx" che è nella cartella indicata, crea effettivamente i file desiderati, ma non li crea nella stessa cartella (indicata in sPath)

    es: sPath = "C:\Users\Sbarba\Desktop\xxx\"

    ma li crea in C:\Users\Sbarba\Documents\

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Macro per creare/aprire/chiudere file

    L'unica cosa che mi viene in mente è che il formato sia diverso (xls - xlsm - xlsx) altrimenti:273:

  5. #5
    L'avatar di Sbarba
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Milano
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    0

    Re: Macro per creare/aprire/chiudere file

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    L'unica cosa che mi viene in mente è che il formato sia diverso (xls - xlsm - xlsx) altrimenti:273:
    No il formato è lo stesso. Nel frattempo avevo editato il messaggio aggiungendo delle modifiche :)

  6. #6
    Direl2007
    Ospite L'avatar di Direl2007

    Re: Macro per creare/aprire/chiudere file

    ciao Sbarba prova a scrivere così:
    Codice: 
    Sub Crea_File()    Dim UR As Integer, I As Integer, WB1 As Workbook, WS1 As String, Nome_Precedente As String, Nome_Modello As String, sPath As String
        
        sPath = "C:\Users\Sbarba\Desktop\xxx\"
            
        Set WB1 = ActiveWorkbook
        WS1 = WB1.ActiveSheet.Name
        UR = Range("A" & Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
        Nome_Precedente = ActiveWorkbook.Name
        Nome_Modello = "File_Base.xlsx"
        Workbooks.Open (sPath & Nome_Modello)
       
        For I = 2 To UR
            ActiveWorkbook.SaveAs Filename:= _
                WB1.Sheets(WS1).Cells(I, 1) & "_" & WB1.Sheets(WS1).Cells(I, 2) & "C:\Users\Sbarba\Desktop\xxx\" & ".xlsx", FileFormat:=xlOpenXMLWorkbook, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
        Next I
        
        ActiveWindow.Close
        Windows(Nome_Precedente).Activate
        
        Application.ScreenUpdating = True
        MsgBox "Elaborazione Effettuata.  Creati " & I - 2 & " file"
        Set WB1 = Nothing
    dimmi se va
    bye

  7. #7
    L'avatar di Sbarba
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Milano
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    0

    Re: Macro per creare/aprire/chiudere file

    Ciao Direl2007,

    grazie per la risposta. Sono arrivato ad una soluzione simile alla tua che stavo per pubblicare.

    La parte che hai corretto l'ho modificata in modo simile:
    Codice: 
    For I = 2 To UR        ActiveWorkbook.SaveAs Filename:= _
                sPath & WB1.Sheets(WS1).Cells(I, 1) & "_" & WB1.Sheets(WS1).Cells(I, 2) & ".xlsx", FileFormat:=xlOpenXMLWorkbook, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
        Next I
    ora mi sembra funzioni tutto correttamente.

    Le due macro finali, nel caso potessero servire a qualcuno, sono:

    Codice: 
    Sub Crea_File()    Dim UR As Integer, I As Integer, WB1 As Workbook, WS1 As String, Nome_Precedente As String, Nome_Modello As String, sPath As String
        
        sPath = "C:\Users\Sbarba\Desktop\xxx\"
            
        Set WB1 = ActiveWorkbook
        WS1 = WB1.ActiveSheet.Name
        UR = Range("A" & Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
        Nome_Precedente = ActiveWorkbook.Name
        Nome_Modello = "File_Base.xlsx"
        Workbooks.Open (sPath & Nome_Modello)
        
    
    
        For I = 2 To UR
            ActiveWorkbook.SaveAs Filename:= _
                sPath & WB1.Sheets(WS1).Cells(I, 1) & "_" & WB1.Sheets(WS1).Cells(I, 2) & ".xlsx", FileFormat:=xlOpenXMLWorkbook, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
        Next I
        
        ActiveWindow.Close
        Windows(Nome_Precedente).Activate
        
        Application.ScreenUpdating = True
        MsgBox "Elaborazione Effettuata.  Creati " & I - 2 & " file"
        Set WB1 = Nothing
    End Sub
    e

    Codice: 
    Public Sub mApriFile()
    
    On Error GoTo RigaErrore
    
        Dim sh As Worksheet
        Dim wrk As Workbook
        Dim sPath As String
        Dim sNomeFile As String
        Dim lRisposta As Long
        Dim uRiga As Long
    
        uRiga = Range("C" & Rows.Count).End(xlUp).Row
    
        sPath = "C:\Users\Sbarba\Desktop\xxx\"
        
        Set sh = Worksheets("Foglio1")
    
        With sh
        For I = 2 To uRiga
            sNomeFile = .Range("c" & I).Value & ".xlsx"
            Workbooks.Open (sPath & sNomeFile)
    
            Application.Wait Now + TimeValue("00:00:05")
            ActiveWorkbook.Save
            ActiveWindow.Close
        Next I
        End With
    
    RigaChiusura:
        Set sh = Nothing
        Exit Sub
        
    RigaErrore:
        MsgBox Err.Number & vbNewLine & Err.Description
        Resume RigaChiusura
    
    End Sub

  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2808
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979

    Re: Macro per creare/aprire/chiudere file

    Se hai risolto il problema, segna questa discussione come "RISOLTO".
    Vai sul menù "Strumenti Discussione" (all'inizio del thread) e scegli la voce "Segna questo thread come risolto...".

  9. #9
    L'avatar di Sbarba
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Milano
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    0

    Re: Macro per creare/aprire/chiudere file

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Se hai risolto il problema, segna questa discussione come "RISOLTO".
    Vai sul menù "Strumenti Discussione" (all'inizio del thread) e scegli la voce "Segna questo thread come risolto...".
    fatto, vi ringrazio per l'aiuto.

Discussioni Simili

  1. Salvare dati su file esterno senza aprire il file di destinazione
    Di Vincenzo Damiani nel forum Domande su Excel VBA e MACRO
    Risposte: 17
    Ultimo Messaggio: 19/11/16, 09:28
  2. Aprire le macro di Open Office, e file ODS.
    Di Irclen nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 19/07/16, 13:10
  3. Macro per aprire un file con nome sempre variabile
    Di kellington90 nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 21/05/16, 13:30
  4. Aprire, modificare, salvare e chiudere il file indicato nella cella
    Di kellington90 nel forum Domande su Excel VBA e MACRO
    Risposte: 6
    Ultimo Messaggio: 19/05/16, 11:03
  5. apriree chiudere file per aggiornamento collegamenti senza visualizzarli
    Di patel nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 13/04/16, 11:02

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •