Esportare in xls risultati filtrati in maschera

Anonimo
2022-01-18T14:53:54+00:00

Buon pomeriggio a tutti,

ho cercato di risolvere autonomamente ma purtroppo sono alle prime armi e non ci sono riuscito.

Ho una "maschera divisa" in access 2016, sulla maschera ci sono una casella di riepilogo con selezione multipla (dove seleziono gli elementi) e un pulsante che esegue un filtro impostato in vba che ha come parametri i valori selezionati nella casella di riepilogo. Fin qui tutto bene, il filtro funziona e visualizzo nella maschera i risultati, ora vorrei esportare questi risultati e sto provando (tramite vba DoCmd.TransferSpreadsheet acExport, , Me.RecordSource, "C:\prova.xlsx" ) ma esporta tutto il contenuto della query sulla quale si appoggia la maschera. come posso passare il filtro che imposto per la maschera anche a Me.RecordSource ? (sempre se è possibile farlo)

grazie mille

Microsoft 365 e Office | Access | 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
domenico laurenza 9,900 Punti di reputazione Moderatore volontario
2022-01-19T18:13:07+00:00

Ciao,

ti posto un esempio di codice seguendo il suggerimento di Sandro

Private Sub cmdEsporta_Click()

Dim qDef As QueryDef 

Dim myRecordSource As String 

'-> Elimino la query qryTemp se già esiste

On Error Resume Next 

CurrentDb.QueryDefs.Delete "qryTemp" 

On Error GoTo 0 

'-> Se il recordsource presenta un ; lo elimino

myRecordSource = Replace(Me.RecordSource, ";", "") 

'-> Se il recordsource della maschera è una query che quindi contiene una Select

If Left(myRecordSource, 7) = "Select " Then 

'-> Se contiene o no una clausola Where

   If InStr(myRecordSource, " Where ") = 0 Then 

      Set qDef = CurrentDb.CreateQueryDef("qryTemp", myRecordSource & " Where " & Me.Filter) 

   Else 

      Set qDef = CurrentDb.CreateQueryDef("qryTemp", myRecordSource & " And " & Me.Filter) 

   End If 

Else 

'-> Se il recordsource è una tabella

   Set qDef = CurrentDb.CreateQueryDef("qryTemp", "Select \* From " & myRecordSource & " Where " & Me.Filter) 

End If 

DoCmd.TransferSpreadsheet acExport, , "qryTemp", "C:\Temp\prova.xlsx" 

CurrentDb.QueryDefs.Delete "qryTemp" 

End Sub

Facci sapere

Ciao Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-01-25T15:26:40+00:00

    Grazie mille,

    ho risolto con il codice che mi hai scritto

    buona giornata

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-01-19T15:15:08+00:00

    Grazie mille per la risposta..

    ho fatto un po di ricerche per capire come utilizzare questo metodo ma non riesco a capire bene essendo alle prime armi,

    potresti farmi un esempio?

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-01-18T16:18:16+00:00

    ciao Vincenzo,

    crea una query di selezione con il metodo createQuerydef concatenando il recordsource della form al filtro della form stessa che non sarà altro che la clausola where della query.

    imposti il metodo transferSpreadsheet sulla query appena creata ed effettui l'esportazione.

    cancelli la query appena creata in modo da rendere utilizzabile il codice invocato di volta in volta.

    HTH.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento