Sviluppare funzionalita su Microsoft Office con VBA Access export report su Excel

Login Registrati
Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #53657 Score: 0 | Risposta

    roberto21
    Partecipante
      4 pts

      Ho un problema che attribuisco alla mia mancata  comprensione di qualcosa di ovvio.

      Ho il seguente codice, attivato cliccando sul tasto "esporta su excel" di un report in access. 

      Private Sub ExpExcel_Click()
          Dim ExcelFileName As String, QueryName As String
          
          ExcelFileName = "Iscrizione " & [Forms]![FrmGeneraReportCorsi]![ReportCorso] & Format(Date, "dd-mm-yyyy") & ".xlsx"
          ExcelFileName = CurrentProject.path & "\" & ExcelFileName
          
          On Error Resume Next
          Kill filemane
          'La query deve essere modificata aggiungendo i filtri...
          QueryName = "QueryREPIscrizioneCorsiMOD"
          
          DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, QueryName, ExcelFileName, True
        '********************************
      
          Dim XLapp As Excel.Application
          Dim xlWB As Excel.Workbook
          Set XLapp = New Excel.Application
          Dim xlSh As Excel.Worksheet
       
          Set xlWB = XLapp.Workbooks.Open(ExcelFileName, editable = True, notify = False)
          Set xlSh = xlWB.Sheets(1)
      
          With xlSh
              .Columns("C:D").HorizontalAlignment = xlCenter
              .Columns("K").NumberFormat = "General"
              
              .Range("1:1").Font.Bold = True
              .Range("A:N").EntireColumn.AutoFit
          End With
          ActiveSheet.ListObjects.Add(xlSrcRange, _
                  Range("A1").CurrentRegion, XlListObjectHasHeaders:=xlYes, _
                  TableStyleName:="TableStyleMedium8").Name = "Lista Iscrizione"
      
          xlWB.Save
          xlWB.Close
          Set xlWB = Nothing
          XLapp.Quit
          Set XLapp = Nothing
      '*********************************************
          MsgBox "il file esportato si trova in " & ExcelFileName
      End Sub
      

      Il report viene correttamente esportato sull file .xslx, qui non ci sono prolemi. 

      Ora vorrei abbellire un po' il file excel, per cui lo apro, seleziono l'unico worksheet e applico alcuni abbellimenti. Per ultimo, lo formatto come tabella a righe di colore alternato, Ora salvo:

      xlWB.Save
      xlWB.Close

      Problema 1: xlWB.Save mi causa un messaggio che mi avvisa che il file esiste già e chiede se voglio sovrascriverlo. Non capisco il  messaggio: se sto editando il file, quando lo salvo è chiaro che voglio sovrascriverlo. O no?

      Problema 2: tanto per vedere se gli abbellimenti hanno funzionato, dico Si', sovrascrivi. Bene, il file "sovrascritto" non ha tracccia dei miei cambiamenti, è esattamente quello in uscita dal 

      docmd.transferspreadsheet

      Dove sbaglio? O che cosa ho omesso' ho seguito passo passo il codice col debugger, nessun errore e tutte le istruzioni eseguite. Dove sono finiti i cambiamenti?

       

      #53658 Score: 0 | Risposta

      LukeReds
      Partecipante
        13 pts

        ciao,

        perchè l'istruzione on error resume next? 

        Per caricare i dati in excel da access (o n altri tipi di db) potresti usare le power query.

        #53659 Score: 0 | Risposta

        roberto21
        Partecipante
          4 pts

          on error resume next mi serve solo per il caso che  "kill ExcelFileName" fallisca perchè il file non esiste.

          Lo so, uso power query altrove, ma non è questo quello che chiedevo, L'utente può generare il report, e può esportarlo su excel se gli serve per altri scopi. Io vorrei capire se il mio codice è sbagliato, e come si dovrebbe fare per modificare e salvare il file generato.

          #53660 Score: 0 | Risposta

          LukeReds
          Partecipante
            13 pts

            non ti posso aiutare su vba per access però le istruzioni corrette sarebbero

            On Error Resume Next

            Kill filemane

            on Error goto 0

            #53661 Score: 0 | Risposta

            roberto21
            Partecipante
              4 pts

              Sapevo che c'era una stupidata pazzesca. Ho dimenticato di mettere on error goto 0 dopo il kill, per annullare il resume next. 

              Tuttavia, fatto questo, ho beccato altri errori

              Problema 3.   xlWB.Save runtime error 1004, method save of workbook failed (?)

              Problema 4. L'istruzione Columns("K").NumberFormat = "General" funziona solo con "General", Se metto al suo posto Accounting, o currency, ottengo un runtime error 1004 unable to set the NumberFormat property of the range class. Con General non c'è errore. Eppure la documentazione Microsot dice che "The format code is the same string as the Format Codes option in the Format Cells dialog box."

               

              #53662 Score: 0 | Risposta

              alexps81
              Moderatore
                55 pts

                Ciao, sarebbe possibile allegare il database giusto per provare a dargli uno sguardo? Ovviamente privo di dati sensibili. In ufficio ho un database che esporta dati da un Report in Excel attraverso una macro e contestualmente manipola il foglio prima di salvarlo.

              Login Registrati
              Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
              Rispondi a: Access export report su Excel
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni: