Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Access] Modifica foglio di excel

    Ho fatto un software con macro di access che legge da una tabella di access e scrive i valori all'interno di un foglio di Excel.
    Il codice è più o meno questo:

    codice:
    Dim riga As Integer
    Dim oApp As Object
    Dim SQL1 As String
    Dim row1 As New ADODB.Recordset
    Dim dbname1 As New ADODB.Connection
     
    dbname1.Provider = "Microsoft.Jet.OLEDB.4.0"
    dbname1.Open cartellainstallazione & "back.mdb"
     
    SQL1 = "SELECT Tabella1.campo1, Tabella1.campo2, Tabella1.campo3, Tabella1.campo4 FROM Tabella1"
    row1.Open SQL1, dbname1
     
    Set oApp = CreateObject("Excel.Application")
    oApp.Workbooks.Open Modello
    oApp.Visible = True
     
    riga = 2
     
    With row1
    Do While Not .EOF
               oApp.Sheets(NomeFoglioTSO).Cells(riga, 1) = .Fields(0) & " - " & .Fields(2)
               oApp.Sheets(NomeFoglioTSO).Cells(riga, 2) = .Fields(0)
               oApp.Sheets(NomeFoglioTSO).Cells(riga, 3) = .Fields(1)
               oApp.Sheets(NomeFoglioTSO).Cells(riga, 4) = .Fields(2)
               oApp.Sheets(NomeFoglioTSO).Cells(riga, 5) = .Fields(3)
     
                riga = riga + 1
                
                .MoveNext
                Loop
    End With
    row1.Close
     
    oApp.Workbooks.Save
    oApp.Workbooks.Close
    oApp.Application.Quit
    Set oApp = Nothing
    Tutto funziona ma è eccessivamente lento (impiega minuti per poche centinaia di righe).
    Qualcuno sa se esista un metodo più veloce per ottenere lo stesso risultato?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Trattandosi di VBA, sposto nel forum "Visual Basic e .NET Framework".

    Inoltre, i tag da usare per il codice si chiamano CODE. Quelli che hai usato tu (QUOTE) servono per le citazioni.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Prima di tutto è meglio lasciare nascosto il foglio
    codice:
    oApp.Visible = False
    Poi devi disattivare alcune proprietà di Excel che rallentano vistosamente nella modifica:
    codice:
        oApp.Application.Interactive = False
        oApp.Application.ScreenUpdating = False
        oApp.Application.DisplayAlerts = False
    Meglio disattivare anche il Calcolo automatico, se le celle contengono formule:
    codice:
        oApp.Calculation = xlCalculationManual
        ' calcola comunque le formule prima di salvare
        oApp.CalculateBeforeSave = True
    Alla fine, prima di salvare, rimetti tutto a posto:
    codice:
        objExcel.Application.Interactive = True
        objExcel.Application.ScreenUpdating = True
        objExcel.Application.DisplayAlerts = True
    
        ' riabilito i calcoli
        objExcel.Calculation = xlCalculationAutomatic

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.