VBA e Macro



  • VBA e Macro
    di baudo90 (utente non iscritto) data: 15/12/2016 22:24:15

    Buonasera,

    ho bisogno di creare una macro che apre un file, lo aggiorna (ci sono dati presi da internet), lo salva e lo chiude.

    I percorsi dei file da aprire si trovano nel foglio excel stesso dove è presente una lista.
    La macro deve partire tramite click di un pulsante.

    Qualcuno mi può aiutare?

    Grazie



  • di patel data: 16/12/2016 07:58:24

    troppo vago il titolo e la richiesta, allega il file con dati e risultato desiderato





  • di baudo90 (utente non iscritto) data: 16/12/2016 23:02:56

    Questo è il codice che ho creato.

    Il codice apre, aggiorna, salva e chiude i file xls i cui percorsi sono elencati nel file della macro. Verdi Allegati.
    Il codice senza ciclo Do funziona, se inserisco il codice DO (in modo che il codice ripete la stessa azione per tutti i percorsi elencati fino a che non trova 9999) non funziona più.

    Purtroppo però non funziona.
    Cosa c'è che non va?
     
    Sub read_closed()
    Dim app As New Excel.Application, wbk As Excel.Workbook
    Dim i As Integer
    i = 1
      
      Do
        
        Set wbk = app.Workbooks.Add(Range("A" & "i").Value & Range("B" & "i").Value)
        
        wbk.RefreshAll
        
        wbk.Application.DisplayAlerts = False
        wbk.SaveAs Range("A" & "i").Value & Range("B" & "i").Value
        wbk.Application.DisplayAlerts = True
        
        wbk.Close
        
        i = i + 1
        
           
    If Range("A" & "i").Value = 9999 Then Exit Do
    
    Loop
     app.Quit
        Set app = Nothing
        
    End Sub



  • di patel data: 17/12/2016 07:52:23

    prova così
     
    Sub read_closed()
    Dim app As New Excel.Application, wbk As Excel.Workbook
    Dim i As Integer
    i = 1
    Set app = CreateObject("Excel.Application")
    Application.DisplayAlerts = False
    Do
        Set wbk = app.Workbooks.Open(Range("A" & "i").Value & Range("B" & "i").Value)
        wbk.SaveAs Range("A" & "i").Value & Range("B" & "i").Value
        wbk.Close
        i = i + 1
        If Range("A" & "i").Value = 9999 Then Exit Do
    Loop
    Application.DisplayAlerts = True
    app.Quit
    Set app = Nothing
        
    End Sub
    






  • di baudo90 (utente non iscritto) data: 17/12/2016 09:49:17

    Grazie patel...bastava togliere le virgolette alle "i".