Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

Salvataggio Query di Selezione in Foglio xlsx

  1. #1
    Massimo_914 non è in linea Novello
    Post
    22
    Like Inviati  
    0
    Like Ricevuti  
    2
    Access -Vba Metodo OutputTo
    Buongiorno a tutti e grazie a chi vorrà darmi una mano.

    Anche se la domanda può sembrare banale ci sto perdendo un mucchio di tempo senza trovare una soluzione logica.

    Realizzo DB per il lavoro e, a mano a mano che le esigenze aumentano, aumenta anche il grado della raffinatezza che vorrei raggiungere.

    Nella fattispecie vorrei realizzare delle routine automatiche, salvate sotto alcuni tasti di una maschera di gestione che uso per riepilogare e facilitare tutte le azioni da effettuare, per creare degli Output di query di selezione in fogli excel che abbiano le seguenti caratteristiche (metto i dati quanto più aderenti possibile alla realtà):


    Nome DB: Progetto Gara 2020
    Path di salvataggio del DB: C:\Users\(NomeUser)\Desktop\DBReport\Logistics XXXXXX\Gara XXXXXXX 2020 DB\Gara2020_7.accdb
    Query di selezione da Salvare: 6020_Output_WIP_Business
    Path di Salvataggio della Query: C:\Users\(NomeUser)\Desktop\DBReport\Logistics XXXXXX\File di Gestione\Output\Gara 2020
    N.B. Ci sono degli spazi nel path di indirizzamento

    Soluzioni Utilizzate
    Attuale > DoCmd.RunSavedImportExport "Esporta-Avanzamento Gara XXXXXX OK"
    ma questo mi limita sul nome File da salvare perché vorrei inserire anche la data di salvataggio
    Macro EsportaConFormattazione: Inserisco TipoOggetto: Query; NomeOggetto; FormatoOutput: Cartella di Lavoro excel (*xlsx); File Output: (Il Path precedente; Qualità di Output: stampa
    Limitazione:
    Stessa della precedente
    Problema:
    Il file viene salvato nel Path richiesto, ma non è riconosciuto da Office come file xlsx
    Comando Vba Utilizzato:
    DoCmd.OutputTo acOutputQuery, "6020_Output_WIP_Business", acFormatXLS, "C:\Users\(NomeUser)\Desktop\DBReport\Logistic s XXXXXX\File di Gestione\Output\Gara 2020", & "_" & Format(Date, "yyyymmdd") & ".xls", False , , , acExportQualityScreen
    Problema:
    Non c'è verso di farlo funzionare e non ho capito se sbaglio qualcosa nel comando o nel modo di indirizzare il Path di salvataggio
    Se qualcuno potesse aiutarmi sarei molto grato.

    Grazie anticipate e saluti

    Massimo

  2. #2
    Post
    1,816
    Like Inviati  
    0
    Like Ricevuti  
    4
    Quote Originariamente inviato da Massimo_914 Visualizza il messaggio
    DoCmd.OutputTo acOutputQuery, "6020_Output_WIP_Business", acFormatXLS, "C:\Users\(NomeUser)\Desktop\DBReport\Logistic s XXXXXX\File di Gestione\Output\Gara 2020", & "_" & Format(Date, "yyyymmdd") & ".xls", False , , , acExportQualityScreen
    Problema:
    Non c'è verso di farlo funzionare e non ho capito se sbaglio qualcosa nel comando o nel modo di indirizzare il Path di salvataggio
    Dal sito Microsoft
    expression.OutputTo (ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding, OutputQuality)
    Per quei comandi con così tanto parametri a volte è molto più chiaro usare la "chiamata nominativa" e non per posizione, quindi magari con degli "a capo" strategici, che qui metto anche per facilità di lettura, per non dover scorrere in orizzontale la finestrella

    DoCmd.OutputTo 	ObjectType:=acOutputQuery, _
    				ObjectName:="6020_Output_WIP_Business", _
    				OutputFormat:=acFormatXLS, _
    				OutputFile:="...", _
    				AutoStart:=False, _
    				OutputQuality:=acExportQualityScreen
    
    Il problema sta nel parametro che hai passato ad OutputFile, ovviamente.
    Lo prendo singolarmente
    "C:\Users\(NomeUser)\Desktop\DBReport\Logistics XXXXXX\File di Gestione\Output\Gara 2020", & "_" & Format(Date, "yyyymmdd") & ".xls"
    
    Prima cosa da fare per il debug, cioè per capire perché non funziona questa cosa, è usare una directory semplice, sicura, tipo C:\Test\ o simili. Fatto questo, se funziona, significa che il problema è lì
    Si passa allora a costruire la stringa al di fuori del comando, con un eventuale Debug.Print della stessa
    strPath = "C:\Users\(NomeUser)\Desktop\DBReport\Logistics XXXXXX\File di Gestione\Output\Gara 2020", & "_" & Format(Date, "yyyymmdd") & ".xls"
    DoCmd.OutputTo ...., OutputFile:=strPath, ...
    
    Ecco dov'è il problema, comunque: c'è una virgola di troppo tra Gara2020" e "_". Quella virgola ha fatto in modo che da quel momento si passasse ad un altro parametro di OutputTo. Almeno direi che è lì il problema. Vale comunque il discorso di prima, quello della costruzione della stringa ad hoc, l'unica che permette ad esempio di verificare se ci sono caratteri vietati o simili, grazie al Debug.Print. Con la stringa ad hoc probabilmente ti sarebbe stata evidenziata subito quella virgola fuori posto.
    Da ultimo, OutputTo è lazzarone e il sito Microsoft da parecchio tempo è stranamente privo di link alle costanti acFormat, questo potrebbe averti creato qualche grattacapo nel riconoscimento del formato xls e xlsx dell'ipotesi con uso della macro. Da non usare comunque: macro è male, vba è bene.
    Ultima modifica di Phil_cattivocarattere; 17-12-2020 11:41 

  3. #3
    Massimo_914 non è in linea Novello
    Post
    22
    Like Inviati  
    0
    Like Ricevuti  
    2
    Posto i risultati di una serata di prove:
    1) Eliminata la virgola “incriminata” dal path > Errore : ancora presente
    2) Creata variabile StrPath che contenesse il path e suo inserimento in outputFile > Errore: ancora presente
    3) Mi sono accorto che il nome della query usata era errato, in quanto utilizzo un’area oggetti Personalizzata per raggruppare gli oggetti per funzioni analoghe e ne avevo fatto la modifica non nella parte Oggetti non Assegnati. Corretto il nome: Modifica errore in quanto un box mi avvertiva che il numero di records richiesto dalla query non poteva essere trasferito al file da salvare
    4) Effettuata variazione da acFormatXLS a acFormatXLSX > Risultato: Funziona.
    A questo punto ringraziare Phil, che avrà pure un cattivocarattere ma a me ha risolto un bel problema. Dandomi la possibilità di arrivare a conclusione ragionandoci sopra

  4. #4
    Post
    1,816
    Like Inviati  
    0
    Like Ricevuti  
    4
    Quote Originariamente inviato da Massimo_914 Visualizza il messaggio
    ...Phil, che avrà pure un cattivocarattere...
    ma lo tengo le per occasioni speciali. Di solito sono peggio.
    Quote Originariamente inviato da Massimo_914 Visualizza il messaggio
    Dandomi la possibilità di arrivare a conclusione ragionandoci sopra
    In pieno spirito del forum. Bravo Massimo_914.
    Ora... chi ha fatto 30 può far 31 (oppure chi ha fatto 100% in spirito forum può fare 101%) ti lancio una minisfida: con le correzioni di cui ai punti 3 e 4 messe in pratica, prova a rimettere la virgola dove (secondo me) non doveva essere e guarda se fila dritto o il tipo d'errore che dà. E' ovvio che il thread è chiuso e risolto, si tratta solo di uno "sfizio informatico".

  5. #5
    Massimo_914 non è in linea Novello
    Post
    22
    Like Inviati  
    0
    Like Ricevuti  
    2
    Verifica "con virgola effettuata: non funziona

    Saluti cordialissimi e tienimi d'occhio perché penso che qualche altra domanda già ce l'ho in mente

  6. #6
    Post
    1,816
    Like Inviati  
    0
    Like Ricevuti  
    4
    Quote Originariamente inviato da Massimo_914 Visualizza il messaggio
    tienimi d'occhio
    ti tengo d'occhio sì, anche se per puro caso:
    Access -Vba Metodo OutputTo
    Il crossposting non è consentito

  7. #7
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,346
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    30
    Massimo ... come ti hanno raccomandato nella presentazione, devi leggere e rispettare il regolamento.
    Tra le altre regole, quella relativa al crossposting. Leggi bene e fai attenzione per le prossime volte.
    ℹ️ Leggi di più su AntonioG ...

  8. #8
    Massimo_914 non è in linea Novello
    Post
    22
    Like Inviati  
    0
    Like Ricevuti  
    2
    Adesso ho capito cosa è il Crossposting.
    Per la verità la vera motivazione di aver postato su due siti diversi la stesa domanda era quella di avere risposte diverse, come poi è avvenuto.
    Da MD ho ottenuto la soluzione attraverso OutputTo, mentre dalla Microsoft Community ho ricevuto l'indicazione del TransferSpreadsheet.
    Ora me li sto studiando meglio entrambi per vedere quali sono le differenze ed i campi di applicazione.
    Comunque ho preso nota del mio errore che, comunque, non è stata una manifestazione di malafede.
    Sorry

  9. #9
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,346
    Blogs
    5
    Like Inviati  
    5
    Like Ricevuti  
    30
    A noi non interessa la questione "soluzioni diverse". Importante che tu abbia compreso il tipo di cosa che qui non è gradita. Alla prossima.
    ℹ️ Leggi di più su AntonioG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Opzioni salvataggio di foglio excel stampato da access
    Da follegot nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 06-03-2016, 12:24
  2. Risposte: 11
    Ultimo Post: 28-02-2015, 11:46
  3. Salvare il risultato di una Query in un file . xlsx vergine
    Da massimoqaz1971 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 13-06-2013, 22:40
  4. Salvataggio foglio Excel & avviso
    Da roccolamann nel forum Microsoft Excel
    Risposte: 1
    Ultimo Post: 03-06-2011, 13:44
  5. Salvataggio mdb_be da mdb_fe con selezione percorso
    Da coverx nel forum Microsoft Word
    Risposte: 7
    Ultimo Post: 10-06-2008, 18:44