Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Esportare dati da Access ad Excel

  1. #1
    federicodi84 non  in linea Scolaretto
    Ciao ragazzi ho un problema nell'esportazione dei dati di una query su un file excel. St lavorando in A2010 per esportare i dati utilizzo questa istruzione:
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Nome Query", "C:\FileExcel.xls", True
    
    e fin qui tutto ok. Il problema sorge quando ho le query parametriche, aprendo la maschera inserisco il parametro da ricercare in una casella di testo e poi con il tasto "ricerca" mi avvia la query facendo uscire di seguito nella stessa maschera attraverso una sottomaschera i risultati della ricerca. A questo punto io vorrei che quando clicco la prima volta sul tasto "esporta in excel" dalla maschera mi crea il file excel con la prima esportazione e pu andare bene questo codice
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Nome Query", "C:\FileExcel.xls", True
    
    , ma se cambio parametro di ricerca l'esportazione poi mi dovrebbe andare sul foglio 2 di excel e se cambio un'altra volta dato l'esportazione deve andare sul foglio 3 e cos via...Allo stato attuale solo con il semplice codice postato su mi sovrascrive il file excel ogni volta che esporto una ricerca diversa per la stessa query. spero di essere stato chiaro. Grazie in anticipo

  2. #2
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    ℹ️ Leggi di pi su @Alex ...

  3. #3
    monello non  in linea Scribacchino
    Avevo fatto una cosa analoga anni fa ...
    Credo tu debba integrare del codice nel foglio Excel in fase di apertura dello stesso andando a creare nuovi fogli ....
    Se ripesco il progetto vedo di farti sapere qualcosa ... intanto segui questa traccia ...
    ℹ️ Leggi di pi su monello ...

  4. #4
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Vedi se questo Demo pu esserti utile...
    http://forum.masterdrive.it/access-7...n-excel-54294/
    ℹ️ Leggi di pi su @Alex ...

  5. #5
    federicodi84 non  in linea Scolaretto
    Il problema che io non ho gi un file excel preconfezionato ma mi si crea quando premo il pulsante "esporta dati in excel" con la funzione
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Nome Query", "C:\FileExcel.xls", True
    
    . Quindi come faccio ad impostare una macro sul foglio excel se non esiste da nessuna parte?? grazie per l'aiuto

  6. #6
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Il Demo che ti ho suggerito era volto proprio ad indicarti che ti tocca lavorare di VBA, quindi aprire il File.XLS, leggere il Numero dei Fogli o Sheets, e di conseguenza usare se serve il metodo ADD per aggiungere Fogli... a quel punto il metodo TransfertSpreadSheet potrebbe non essere pi il metodo migliore, ma potrebbe valer la pena usare quanto indicato nel mio esempio.

    Questa valutazione, non semplicemente una riga di codice... ma serve sviluppare la parte mancante ed eventualmente tu voglia farlo integrarla con il codice gi presente nel mio demo, che in tutti i casi il 90% di quello che devi fare.
    ℹ️ Leggi di pi su @Alex ...

  7. #7
    federicodi84 non  in linea Scolaretto
    diciamo che di vba ci capisco abbastanza poco... comunque se ho capito bene dovrei inserire questo codice in un modulo di classe access
    Function EXP2XLS(SQL As String, _
                     Optional ByRef NomeFile As String = vbNullString, _
                     Optional OpenDialog As Boolean = False, _
                     Optional CloseExcel As Boolean = True) As Boolean
        On Error GoTo Handle_err
        Dim xlApp   As Object   ' Oggetto EXCEL
        Dim oWkb    As Object   ' Oggetto WORKBOOK
    
        Dim x           As Integer
        Dim rs          As DAO.Recordset
        Dim strFilter   As String
        Dim intTypeXLS  As Integer
        
        EXP2XLS = False
        
        ' APRE SE ESISTE GIA' UN'OGGETTO EXCEL
        Set xlApp = CreateObject("Excel.Application")
    
        Set oWkb = xlApp.Workbooks.Add()
            
        If Val(xlApp.Version) >= 11 Then
            strFilter = "Excel 2000-2003 Workbook (*.xls), *.xls, "
            strFilter = strFilter & "Excel 2007-2010 Workbook (*.xlsx), *.xlsx,"
            strFilter = strFilter & "Excel 2007-2010 Binary Workbook (*.xlsb), *.xlsb"
        Else
           strFilter = "Excel 2000-2003 Workbook (*.xls), *.xls"
        End If
        
        If OpenDialog = True Then
        
            Do Until NomeFile <> ""
                NomeFile = xlApp.GetSaveAsFilename(InitialFileName:="C:\TestExport.xls", _
                                                   fileFilter:=strFilter, _
                                                   Title:="SELEZIONA NOME FILE")
    
                DoEvents
            Loop
        
        End If
        
        If Len(NomeFile) = 0 Then Exit Function
        
        If EsisteFile(NomeFile) Then Kill NomeFile
    
        '--------------------------------------------------------------
        ' Per   O2003               usare il valore 43  (VERSION 11.0)
        ' Per > O2007 (file xlsB)   usare il valore 50  (VERSION > 11)
        ' Per > O2007 (file xlsX)   usare il valore 51  (VERSION > 11)
        ' Per > O2007 (file xls)    usare il valore 56  (VERSION > 11)
        '--------------------------------------------------------------
        
        'uso la propriet FileFilter come variabile per assegnare il valore corretto relativo a Workbook SaveAs
        If Val(xlApp.Version) > 11 Then
            Select Case Mid$(NomeFile, InStrRev(NomeFile, ".") + 1, Len(NomeFile))
                Case Is = "xlsx"
                    intTypeXLS = 51
                Case Is = "xlsb"
                    intTypeXLS = 50
                Case Is = "xls"
                    intTypeXLS = 56 '"xls" con versione office > 11
            End Select
        Else
            intTypeXLS = 43 '"xls" con versione office < 11
        End If
        oWkb.SaveAs NomeFile, intTypeXLS
    
    
        ' Elimino i Fogli che Excel crea di DEFAULT
        For x = oWkb.Sheets.Count To 2 Step -1
            oWkb.Sheets(x).Delete
        Next
        
        ' Assegno un nome al Foglio(Sheet) rimasto.
        oWkb.Sheets(1).Name = "MANUTENZIONI"
        
        Set rs = CurrentDb.OpenRecordset(SQL, dbOpenDynaset, dbReadOnly)
    
        ' Scrivo nella Cella A1
        oWkb.Sheets(1).Range("A1").CopyFromRecordset rs
        
        rs.Close
        Set rs = Nothing
        
        EXP2XLS = True
    
    Exit_Here:
        oWkb.Save
        If CloseExcel Then
            oWkb.Close True
            xlApp.Quit
        Else
            xlApp.Visible = True
        End If
        Set oWkb = Nothing
        Set xlApp = Nothing
        Exit Function
    
    Handle_err:
        MsgBox Err.Number & " " & Err.Description
        Resume Exit_Here
    End Function
    
    la cosa che non capisco come richiamarlo sul click del pulsante "Esporta in excel" dovrebbe essere una sorta di
    Call EXP2XLS.......
    
    o sto sbagliando completamente??

  8. #8
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Quote Originariamente inviato da federicodi84 Visualizza il messaggio
    diciamo che di vba ci capisco abbastanza poco... comunque se ho capito bene dovrei inserire questo codice in un modulo di classe access
     
    
        ' Elimino i Fogli che Excel crea di DEFAULT
        For x = oWkb.Sheets.Count To 2 Step -1
            oWkb.Sheets(x).Delete
        Next
        
        ' Assegno un nome al Foglio(Sheet) rimasto.
        oWkb.Sheets(1).Name = "MANUTENZIONI"
    
    o sto sbagliando completamente??
    Non un modulo di classe ma un modulo standard le modifiche sono diverse da fare...
    quella relativa ai fogli a mio avviso andrebbe in questa parte che lascio...
    tu non dovrai eliminare i fogli esistenti ma aggiungerne 1 esistenti rinominarlo. ..

    per il resto se non hai le idee chiare.... la vedo complicata.
    ℹ️ Leggi di pi su @Alex ...

  9. #9
    federicodi84 non  in linea Scolaretto
    Ciao ragazzi grazie per le risposte.... tuttavia il problema pi complesso rispetto a quanto detto in precedenza..... infatti la query che eseguo nella maschera access2010 parametrica ed il parametro me lo prende da un campo di testo. Ora vorrei riuscire a salvare nello stesso file, tanti fogli per quante richerche faccio su quella query.... ad esempio se ho una query nazioni e come parametro inserisco Italia sul file excel, che genero cliccando su un pulsante della maschera, ci dovr essere un foglio rinominato Italia, se dopo Italia cerco Francia il file excel dovr aggiornarsi ed avere 2 fogli Italia e Francia se cerco Germania come parametro da access il foglio excel dovr aggiornarsi ancora e creare un ulteriore foglio Germania... Spero di essere stato chiaro. Grazie per il vostro aiuto in anticipo.

  10. #10
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Non un problema che sia una Qry Parametrica... alla fine a te basta avere un Recordset, e la Qry Parametrica consente di essere usata come una query normale, chiaramente devi passare i Parametri...

    Vedi questo:
    Passare un parametro a Queries Parametriche da codice VBA
    ℹ️ Leggi di pi su @Alex ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Articolo: [Access] Esportare dati in Excel e/o XML
    Da @Alex nel forum Microsoft Access
    Risposte: 0
    Ultimo Post: 25-12-2010, 21:37
  2. Esportare dati da access a excel
    Da seamission nel forum Microsoft Excel
    Risposte: 11
    Ultimo Post: 01-02-2010, 17:53
  3. esportare dati da access ad excel
    Da chris77 nel forum Microsoft Excel
    Risposte: 6
    Ultimo Post: 24-09-2009, 17:04
  4. Ado, esportare dati da excel su access
    Da Saint nel forum Microsoft Excel
    Risposte: 4
    Ultimo Post: 12-06-2009, 12:27
  5. Esportare dati da Access a Excel
    Da Fabio63 nel forum Microsoft Access
    Risposte: 14
    Ultimo Post: 24-11-2007, 21:47