› Sviluppare funzionalita su Microsoft Office con VBA › Access export report su Excel
-
AutoreArticoli
-
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.CloseProblema 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?
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.
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.
non ti posso aiutare su vba per access però le istruzioni corrette sarebbero
On Error Resume Next
Kill filemane
on Error goto 0
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."
-
AutoreArticoli