Trasferire Tabelle e/o query Access in Excel

di il
23 risposte

23 Risposte - Pagina 2

  • Re: Trasferire Tabelle e/o query Access in Excel

    Allora lascia stare non complicarti le cose… vedo che in effetti manca qualche pezzo di sostanza.

    Se come hai risolto funziona, usa quello, poi quando avrai più basi magari ci rifletti.

  • Re: Trasferire Tabelle e/o query Access in Excel

    17/04/2023 - @Alex ha scritto:


    Allora lascia stare non complicarti le cose… vedo che in effetti manca qualche pezzo di sostanza.

    Se come hai risolto funziona, usa quello, poi quando avrai più basi magari ci rifletti.

    Grazie ti chiedo solo l'ultima cortesia, se puoi indicarmi come poter unire più esportazioni iin un solo pulsante… . Grazie

  • Re: Trasferire Tabelle e/o query Access in Excel

    Se non sei riuscito a capire come si usa il codice che ti ho proposto, e visto il tentativo decisamente errato che hai fatto, direi che non hai le competenze minime per sviluppare da solo questa cosa, questo significa che serve scriverti completamente il codice… e tu fai Copy/Paste, non è nello scopo del Forum.

    Di fatto devi aprire un RS per ogni origine, e generare poi il Paste nelle celle di Excel, ma con il tuo metodo risulta tutto più laborioso e richiede sicuramente una conoscenza minima che però decisamente non hai…

    Francamente non so cosa suggerirti… accontentati di farlo a pezzi poi man mano che impari migliori.

  • Re: Trasferire Tabelle e/o query Access in Excel

    E si, @Alex ha pienamente ragione… 
    La butto lì per darti una idea diversa e sicuramente molto performante (direi che risponde in tempo reale)… perchè non colleghi il foglio excel al Db Access ?
    Puo' essere una Query qualsiasi una Tabella …. insomma, il lavoro sporco lo fa Access ed Excel prende i risultati finali e te li giostri come meglio credi. Il collegamento può alimentare una Pivot, grafici oppure un semplice Foglio di calcolo

    Non so di preciso il risultato finale che vuoi ottenere, però è un alternativa dove i dati collegati sono sempre reperibili, garantiti e aggiornati. 

  • Re: Trasferire Tabelle e/o query Access in Excel

    Vi ringrazio per i consigli.

    Proverò il collegamento con il foglio Excel…anche se non sono sicura di ottenere quello che mi serve.

    Grazie ancora

  • Re: Trasferire Tabelle e/o query Access in Excel

    21/04/2023 - Valecomme ha scritto:


    Vi ringrazio per i consigli.

    Proverò il collegamento con il foglio Excel…anche se non sono sicura di ottenere quello che mi serve.

    Grazie ancora

    Fai sapere… appena rientro guardo qualcosa del genere che in passato mi è capitato spesso di fare una cosa come la tua. 

  • Re: Trasferire Tabelle e/o query Access in Excel

    21/04/2023 - Valecomme ha scritto:


    Vi ringrazio per i consigli.

    Proverò il collegamento con il foglio Excel…anche se non sono sicura di ottenere quello che mi serve.

    Grazie ancora

    Se ti fa comodo ho messo insieme due righe di codice che puoi modificare a tuo piacimento secondo le tue necessità.
    Ho cercato di inserire più commenti possibili per renderlo comprensibile, ma in breve vado a spiegare la funzionalità.

    • Scopo 
      • Esportare da Db Access Tabelle, Query o stringhe Sql Recordset, in un file Excel 
      • Formattazione righe colonne del nuovo File Excel creato: a tal fine si crea uno o più file Excel di comodo con la formattazione Voluta
      • I file Excel così generati saranno già formattati come predisposto dai file di modello includendo eventuali Formule
    • Modelli Esempio: ModelSheet001.xlsx 
    • Modelli Esempio: ModelSheet002.xlsx
    • Come richiamare l'Export 
      • Poniamo di avere due query di selezione denominate Qry_ExportExcel e Qry_ExportExcel2
        • la prima estrai i record per tutte le Città
        • la seconda estrai i dati di una solo Città
      • Poniamo di richiamare l'Export utilizzando un Button da Form come da esempio
    Option Compare Database
    Option Explicit
    
    ' EXPORT EXCEL BUTTON
    Private Sub btnExportExcel_Click()
    ' export excel file 1
    myExportExcel "Qry_ExportExcel", CurrentProject.Path & "\ModelSheet001.xlsx", _
                  CurrentProject.Path, "A5", "My title sheet exported", "A2"
    ' export excel file 2
    myExportExcel "Qry_ExportExcel2", CurrentProject.Path & "\ModelSheet002.xlsx", _
                  CurrentProject.Path, "A5", "My title sheet exported del " & Format(Now, "dd/mm/yyyy"), "B2"
    ' export excel xx
    ' .... per ogni export può essere utilizzato un solo o più modelli di formattazione per i nuovi files excel da creare
    End Sub
    • In questo caso viene richiamata la Sub myExportExcel per eseguire due volte l'Export dei dati  in due file excel
      • Nel primo export si indica di utilizzare la Query “Qry_ExportExcel”
        • si utilizza come modello di formattazione il file excel ModelSheet001.xlsx
        • si inizia ad importare il recordset dalla cella A5
        • si imposta un titolo (facoltativo) “My title sheet exported” nella cella “A2”
      • Nel secondo export si indica di utilizzare la Query “Qry_ExportExcel2”
        • si utilizza come modello di formattazione il file excel ModelSheet002.xlsx
        • si inizia ad importare il recordset dalla cella A5
        • si imposta un titolo (facoltativo)  "My title sheet exported del ", più la data del giorno, nella cella “B2”
      • n.b. ovviamente sarà anche possibile utilizzare un unico modello per tutti gli Export desiderati.
    • La Sub che viene richiamata può essere posta in un modulo ed è la seguente:
    Option Compare Database
    Option Explicit
    ' By65Franco EXPORT TABLE OR QUERY TO EXCEL FILE WITH FORMATTING FROM AN EXCEL FILE TEMPLATE
    ' La Sub consente di exportare Tabelle, Query o Recordset ricavato da una stringa Sql,
    ' in un file di Excel con righe e colonne preformattate ricavate da file excel di modello.
    ' Una finestra di dialogo consente di indicare la path e il nome del file Excel che verrà popolato con i dati da exportare
    '
    ' I Parametri richiesti sono:
    ' strObjToExport                = Obbligatorio  -> stringa nome Tabella/Query da Exportare
    ' strExcelModelPath             = Obbligatorio  -> stringa nome file Excel e Path del Modello da utilizzare
    '                                               per la formattazione del foglio di lavoro
    ' strExportExcelPath            = Obbligatorio  -> stringa Path di destinazione dove verrà salvato il file
    '                                               Excel che verrà popolato dall'Exportazione del Recordset
    ' strCellStart                  = Obbligatorio  -> stringa nome Cella dalla quale avrà inizio l'Export
    ' strTitleSheetExport           = Facoltativo   -> stringa Titolo da impostare nel Foglio Excel Exportato
    ' strCellStartTitleSheeetExport = Facoltativo   -> stringa nome Cella dalla quale avrà inizio il Titolo del
    '                                               Foglio Excel Exportato
    ' Eempio:
    '   myExportExcel "Qry_ForExport", "c:\MyPath\ModelExport.xlsx", "c:\MyPath\Export", "A5", "Title Sheet", "A2"
    '
    ' - In questo esempio viene esportata la Query di nome Qry_ForExport
    ' - Viene utilizzato un modello per la formattazione del foglio excel esportato di nome ModelExport.xlsx in c:\MyPath\
    ' - Viene creato un nuovo file excel con il nome scelto nella finetra di Dialogo in c:\MyPath\Export
    '   La destinazione e il file excel vengono selezionati a proprio piacimento in FileDialog SaveAs
    ' - Viene utilizzata la cella A5 (Colonna A della riga 5) come inizio dell'Export dati nel foglio di lavoro
    ' - Viene riportato il titolo nel foglio excel "Title Sheet"
    ' - Viene riportato il titolo a partire dalla cella A2 (Colonna A della riga 2) nel foglio di lavoro
    ' ------------------------------------------------------------------------------------------------------------
    Sub myExportExcel(strObjToExport As String, strExcelModelPath As String, strExportExcelPath As String, strCellStart As String, Optional strTitleSheetExport As String, Optional strCellStartTitleSheeetExport As String)
    ' check parameters
    If strObjToExport = vbNullString Or _
      strExcelModelPath = vbNullString Or _
      strExportExcelPath = vbNullString Or _
      strCellStart = vbNullString Then
       MsgBox "Missing or incorrect parameters", vbCritical, "Error"
       Exit Sub
    End If
    ' check table or query if exists
    If Not myCheckObj(strObjToExport) Then Exit Sub
    ' check file excel model if exists
    If Len(Dir(strExcelModelPath, vbArchive)) = 0 Then
       MsgBox "Excel template file [" & strExcelModelPath & "] not found", vbCritical, "Error"
       Exit Sub
    End If
    ' chek folder file excel exoprt if exists
    If Len(Dir(strExportExcelPath, vbDirectory)) = 0 Then
       MsgBox "Excel file destination folder to create [" & strExportExcelPath & "] not found", vbCritical, "Error"
       Exit Sub
    End If
    ' set and open file dialog Save As
    Dim fDialog As Office.FileDialog
    Set fDialog = Application.FileDialog(msoFileDialogSaveAs)
    With fDialog
       ' set the title of the dialog box.
       .Title = "Export Excel File"
       ' set filename SaveAs
       .InitialFileName = strExportExcelPath & "\*.xlsx"
       ' show dialogbox
       If .Show = True Then
           ' retrive fullpath and filename SaveAs
           strExportExcelPath = .SelectedItems(1)
           ' set pointer
           DoCmd.Hourglass True
           
           ' set scipting file system obj
           Dim fs As New FileSystemObject
           Set fs = CreateObject("Scripting.FileSystemObject")
           ' copy model excel and create new file excel
           fs.CopyFile strExcelModelPath, strExportExcelPath, True
           
           ' set application excel
           Dim appExcel As Excel.Application
           Set appExcel = CreateObject("Excel.Application")
           appExcel.Visible = False
           ' set worbook and select sheet
           Dim myWorkbook As Excel.Workbook
           Set myWorkbook = appExcel.Workbooks.Open(strExportExcelPath)
           myWorkbook.Sheets(1).Activate
           ' set sheet activated
           Dim mySheet As Excel.Worksheet
           Set mySheet = myWorkbook.ActiveSheet
           
           ' open recorset for copy records in to export file excel
           Dim rsExport As DAO.Recordset
           Set rsExport = DBEngine(0)(0).OpenRecordset(strObjToExport)
           mySheet.Range(strCellStart).CopyFromRecordset rsExport
           
           ' set my title sheet exported [optional]
           If strTitleSheetExport <> vbNullString And strCellStartTitleSheeetExport <> vbNullString Then mySheet.Range(strCellStartTitleSheeetExport) = strTitleSheetExport
           mySheet.Range(strCellStart).Select
           
           ' close all object and save new workbook
           Set fs = Nothing
           Set mySheet = Nothing
           myWorkbook.Save
           myWorkbook.Close
           Set myWorkbook = Nothing
           appExcel.Quit
           Set appExcel = Nothing
           rsExport.Close
           Set rsExport = Nothing
           
           ' set pointer
           DoCmd.Hourglass False
           ' msg export completed
           MsgBox "Export Completed" & vbCrLf & strExportExcelPath, vbInformation, "Info Export"
       Else
           ' export cancelled
           strExportExcelPath = vbNullString
           MsgBox "Save cancelled" & vbCrLf & "Excel file export failed", vbInformation, "Info"
       End If
    End With
    Set fDialog = Nothing
    End Sub
    __________________________________________________________________________________________________
    ' By65Franco CHECK IF TABLE OR QUERY EXISTS IN CURRENT DATABASE
    Function myCheckObj(strNameOBJ As String) As Boolean
    myCheckObj = True
    Dim rsSys As DAO.Recordset
    Set rsSys = DBEngine(0)(0).OpenRecordset("SELECT MSysObjects.* FROM MSysObjects " & _
               "WHERE (Type=1 OR Type=4 OR Type=5 OR Type=6) AND name='" & strNameOBJ & "';")
    If rsSys.EOF Then
       MsgBox "Error: object [" & strNameOBJ & "] does not exist", vbCritical, "Error"
       myCheckObj = False
    End If
    rsSys.Close
    Set rsSys = Nothing
    End Function

    Leggere l'istruzioni riportate in testa alla Sub per un corretto utilizzo.
    Ho cercato di commentare il più possibile al fine di poter gestire/modificare il codice a proprio piacimento.

    • Nel primo Export si ottiene i dati relativi a tutte le Città con la formattazione preimpostata sul primo Modello
    • Viene creato un nuovo File Excel con il nome e la path impostati nella Diaolog SaveAs

    • Nel secondo Export si ottiene i dati relativi a una Città con la formattazione preimpostata sul secondo Modello
    • Viene creato un nuovo File Excel con il nome e la path impostati nella Diaolog SaveAs

    N.B.
    Questo vuole essere solo un piccolo esempio di come poter formattare in automatico un foglio Excel ed essere popolato con i dati di un recordset da Vba Access.
    La fantasia e le varie necessità possono essere realizzate anche con questo metodo… ma non è l'unico.

  • Re: Trasferire Tabelle e/o query Access in Excel

    Ciao By65Franco, grazie mille.

    Scusa il ritardo nella mia risposta…

    Ma io ho i fogli tutti in un unico file non su file diversi…però ora lo studio…

    Una domanda che però ti faccio che ho visto in alcune prove precedenti.

    Quando esporto “nomi”  derivanti da relazioni es. “Nome del fornitore” proveniente dalla tabella fornitori, mi indica il valore numerico e non il nome nonostante nelle proprietà della tabella abbia eseguito la query e mi indichi il nome corretto.

    Qualche idea?

    Grazie

  • Re: Trasferire Tabelle e/o query Access in Excel

    11/05/2023 - Valecomme ha scritto:


    Ma io ho i fogli tutti in un unico file non su file diversi…però ora lo studio…

    Ciao

    beh questo è un esempio di come avere un nuovo foglio in un nuovo file excel formattandolo secondo uno schema (Modello) preconfezionato.
    Quindi decido in un Modello come dovranno essere formattate Righe e colonne e in fase di creazione, copiando il modello sul nuovo excel, mi ritrovo tutto formattato come voluto. Un sistema veloce per confezionare le informazioni nel nuovo Foglio di Lavoro.

    Comunque se il file excel esiste vorrà dire che exporterò via via in fogli diversi, nulla di complicato, basta passare in quale foglio di lavoro devono essere riportati i dati.
    Dovresti fare un esempio del flusso delle informazioni… da dove partono e dove devono arrivare. In questo modo si può capire cosa e come fare. E' molto semplice.

    11/05/2023 - Valecomme ha scritto:


    Quando esporto “nomi”  derivanti da relazioni es. “Nome del fornitore” proveniente dalla tabella fornitori, mi indica il valore numerico e non il nome nonostante nelle proprietà della tabella abbia eseguito la query e mi indichi il nome corretto.

    Posta immagine della tabella/query ed export e vediamo di cosa si tratta… non sapendo come hai organizzato le tabelle/query etc… è difficile buttar lì una risposta valida… 
    Probabilmente ti tiri dietro l'Id relazionato e non la descrizione dello stesso … Fai vedere per capire meglio.

Devi accedere o registrarti per scrivere nel forum
23 risposte