Condividi tramite

Esportare dati in Excel da stringa SQL

Anonimo
2012-08-03T08:05:03+00:00

Ho trovato questo esempio:

_______________________________________________________________________

DoCmd.OutputTo acOutputQuery, strSQL, "Microsoft Excel (*.xls)", NomeFoglioDati, -1

 strSQL è la stringa sql o il nome della query.

Nome foglio dati sosttuiscilo con "C:\nomecartelle\prova.xls"

_______________________________________________________________________

Io non riesco a farlo funzionare (Errore di runtime 3011 - il motore di database non e' in grado di trovare l'oggetto  'Select......) .

Ho una maschera che filtro tramite 5 combo, alla fine della mia ricerca, vorrei esportare i dati contenuti nella maschera in Excel.

Private Sub Esporta_Excel_Click()

Dim Miosql As String, DesktopPath As String, xlfile As String

DesktopPath = Environ("userprofile") & "\Desktop"

Select Case Me.TABScadenze.Value

Case 0

Miosql = Me.Scadenze_TB_contratto_pratiche.Form.RecordSource

Case 1

Miosql = Me.Scadenze_TB_contratto_formazione.Form.RecordSource

Case 2

Miosql = Me.Scadenze_TB_contratto_fatture.Form.RecordSource

End Select

DoCmd.OutputTo acOutputQuery, Miosql, "Microsoft Excel (*.xls)", "C:\prova.xls", -1

Shell "Excel.exe " & "C:\prova.xls", vbNormalFocus

End Sub

GRAZIE PER L'AIUTO!!!

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2012-08-03T09:25:47+00:00

    Non puoi utilizzare il metodo OutpuTo passadogli il codice SQL.

    Devi "girarci intorno". Ad esempio così


    Private Sub Esporta_Excel_Click()

        Dim Miosql As String

        Dim qdf As DAO.QueryDef

        Dim db As DAO.Database

        Dim DesktopPath As String

        Set db = CurrentDb

        DesktopPath = Environ("userprofile") & "\Desktop"

        Select Case Me.TABScadenze.Value

            Case 0

                Miosql = Me.Scadenze_TB_contratto_pratiche.Form.RecordSource

            Case 1

                Miosql = Me.Scadenze_TB_contratto_formazione.Form.RecordSource

            Case 2

                Miosql = Me.Scadenze_TB_contratto_fatture.Form.RecordSource

        End Select

        ' Crea una query temporanea

        Set qdf = db.CreateQueryDef("TempQuery", Miosql)

        DoCmd.OutputTo acOutputQuery, "TempQuery", "Microsoft Excel (*.xls)", DesktopPath & "NomeFoglioExcel.xls", True

        'Elimino la query temporanea

        db.QueryDefs.Delete ("TempQuery")

        db.QueryDefs.Refresh

        Set qdf = Nothing

        db.Close

        Set db = Nothing

    End Sub


    la riga Shell "Excel.exe " & "C:\prova.xls", vbNormalFocus è inutile in quanto hai già specificato l'autostart di excel come ultima opzione del metodo OutputTo

    David

    La risposta è stata utile?

    0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-08-03T12:48:15+00:00

    Hai ragione.

    Non avevo letto la precisazione di KARL, e non avrei dovuto dubitare in un suo errore.

    Non lo conosco ma da quanto ho letto in questi mesi dovrebbe essere un vero esperto.

    GRAZIE COME SEMPRE!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-08-03T10:46:38+00:00

    http://answers.microsoft.com/it-it/office/forum/office_2010-access/esporta-query-in-excel-macro-o-vbameglio/91b53e27-a21f-4d9a-9bfb-96a292ef2a36

    Mi sono fidato del post sopra riportato.

    Nel post in verità c'era la soluzione corretta: leggi attentamente la parte in cui Karl dice:

    ....

    OutputTo solo accetta il nome di un oggetto salvato.

    Vuol dire che devi usare il nome di una query salvata:

    ...

    Tuttavia la soluzione che ti ho prospettato della query "al volo" a mio avviso è più aderente al tuo problema in quanto con una query fissa salvata avresti comunque avuto l'esigenza di modificare il suo SQL per adeguarlo al recordsource della maschera scelta in base al valore di TABScadenze.

    Ciao

    David

    La risposta è stata utile?

    0 commenti Nessun commento