Esportazione file excell

di il
16 risposte

Esportazione file excell

Ciao a tutti

vi espongo il mio problema
attualmente esporto una tabella di access in un file excell con la seguente riga di codice

DoCmd.OutputTo acOutputTable, "TBL_FINALE", "ExcelWorkbook(*.xlsx)", "", True, "", , acExportQualityPrint

tutto funziona correttamente, vorrei però che venisse esportato secondo un file modello opportunamnete formattato

qualcuno mi sa dire come fare? come faccio a generare questo file modello? che estensione deve avere?

grazie a tutti per la collabirazione

16 Risposte

  • Re: Esportazione file excell

    Ciao

    dimenticado di scrivere che avevo già fatto anche questa prova

    DoCmd.OutputTo acOutputTable, "TBL_FINALE", "ExcelWorkbook(*.xlsx)", "", True, "C:\Users\vwplc_rds\Documents\TBL_FINALE.xltx", , acExportQualityPrint

    ma non funziona, non da errore ma le proprietà del file modello di excell non vengono mantenute, dorse va salvato in un altro formato?
  • Re: Esportazione file excell

    Prova ad usare questo metodo:
    https://docs.microsoft.com/en-us/office/vba/api/access.docmd.transferspreadsheet
  • Re: Esportazione file excell

    Ciao Alex

    di solito udo DoCmd.TransferSpreadsheet, ho cambiato comando perchè ho visto che con OutputTo si poteva indicare un modello, solo che non capisco perchè non funziona, o meglio lo ignora prorpio
  • Re: Esportazione file excell

    Si hai ragione... non lo uso mai preferendo l'automazione per motivi di complessità...

    Fai una prova veloce convertendo il template che usi in XLSX normale e non in XLTX.... temo possa risiedere li il malinteso di non funzionamento.
  • Re: Esportazione file excell

    Senza saper né leggere né scrivere ma soprattutto senza aver usato il comando per quello che viene richiesto ....
    Dall' help MS riferito a DoCmd.OutputTo :
    
    TemplateFile 	Optional 	Variant 	
    
    A string expression that's the full name, including the path, of the file that 
    you want to use as a template for an HTML, HTX, or ASP file.
    
    Sicuro che si possa usare un template per XLS?
  • Re: Esportazione file excell

    Giusta considerazione...
  • Re: Esportazione file excell

    Ciao

    si avete ragione, controllando bene ho scoperto che per excell non è possibile specificare un tamplate...

    grazie a tutti per la collaborazione
  • Re: Esportazione file excell

    Questa funziona:
    DoCmd.OutputTo acOutputTable, "TBL_FINALE", acFormatXLSX,"C:\Users\vwplc_rds\Documents\TBL_FINALE.xlsx"
  • Re: Esportazione file excell

    Ciao Stifone

    questa estrae il file in excel ma senza template, ha ragione Ale e Max non si può fare.

    ma domanda... forse potrei aprire direttamente da VBA il file in excel e modificarne la formattazione?
  • Re: Esportazione file excell

    Hai provato ad aprire il template da AUTOMAZIONE ed incollargli i dati con il metodo che uso io di solito:
    
    Sub foo()
    Dim rs As DAO.Recordset
    Dim XL As Object
    Dim wb As Object
    
        Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table1;")
        Set XL = CreateObject("Excel.Application")
        Set wb = XL.Workbooks.Open("C:\Users\Kermit\Desktop\Book1.xlsx")
        With wb
            .Worksheets(1).Cells(1).CopyFromRecordset rs
            .Save
            .Close False
        End With
        XL.Quit
        Set XL = Nothing
    
    End Sub
    
    Ti invece di alrire il file XLSX apri il Template e poi fai il SAVEAS passando il nome del file destinazione...

    Per aprire il template puoi usate 2 metodi che trovi qui:
    https://www.tek-tips.com/viewthread.cfm?qid=177054
  • Re: Esportazione file excell

    Grazie Alex

    ci provo
  • Re: Esportazione file excell

    @Alex
    Grazie per codice utilissimo anche per me l'ho adattato partendo dalla seconda riga del file Excel per lasciare le intestazioni.
    Mi si è presentato un problema ... quello di "cancellare" il contenuto delle celle sotto la prima riga.
    ho risolto cosi :
    
    Dim XL As Object
    Dim wb As Object
    
    Dim LastRow, LastColumns As Long
    
    'Prima Svuoto il file excel partendo dalla seconda Riga
    
      'Set rs = CurrentDb.OpenRecordset("SELECT * FROM ORD_FOR_DETTAGLIO;")
        Set XL = CreateObject("Excel.Application")
        Set wb = XL.Workbooks.Open("C:\LIST-EASYDATA\FTP_RIORDINO\ORDINE_A_FORNITORE.xlsx")
        With wb
            LastRow = .Worksheets(1).UsedRange.Row - 1 + .Worksheets(1).UsedRange.Rows.Count 'Ultima riga non vuota
            LastColumns = .Worksheets(1).UsedRange.Columns.Count 'Ultima colonna Utilizzata
                  
            For i = 2 To LastRow
             For c = 1 To LastColumns
             .Worksheets(1).Cells(i, c).Value = "" 'Svouto le celle
             Next c
            Next i
            .Save
            .Close False
        End With
        XL.Quit
        Set XL = Nothing
        
    funziona correttamente ed è anche abbastanza veloce... almeno per le mie esigenze.
    Può essere una soluzione ideale o esiste qualche comando più adeguato?
  • Re: Esportazione file excell

    Allego alcune buone regole per velocizzare la compilazione dei fogli senza vedere sfarfallamenti:
    1) Turn off Screen Updating. ...
    2) Turn off 'Automatic Calculations' ...
    3) Disable Events. ...
    4) Use 'WITH' Statement. ...
    5) Edit Recorded Macros. ...
    6) Use vbNullString instead of “” ...
    7) Reduce the number of lines using comma (,) or colon (:) ...
    8 ) Declare Variables with the smallest viable data type size.

    Utilizza almeno le prime 2...

    Detto questo se usi un range e lo cancelli non fai prima...?
    Se non sai come si fa... registra una macro in excel e vedi come viene tradotta in vba...
  • Re: Esportazione file excell

    @Alex grazie dei preziosi suggerimenti... mi metto a studiarli...
Devi accedere o registrarti per scrivere nel forum
16 risposte