Cambiare il percorso di una query - EXCEL, VBA, ACCESS

Anonimo
2013-07-11T09:55:22+00:00

Salve a tutti, 

ho il seguente problema. Ho creato una macro su VBA (registrata) che importa dati da una Microsoft Query (che apre un Database Access ed importa i dati da una tabella presente all'interno). Adesso ho il seguente problema: avendo registrato la macro, il percorso diviene automaticamente il seguente...

_________________________________________________________________________________________________________________________________________________________

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _

"ODBC;DSN=MS Access Database;DBQ=C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb;DefaultDir=C:\Users\Matteo\Desktop\C" _

), Array( _

"ost Management Tool;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _

)), Destination:=Range("$AA$3")).QueryTable

.CommandText = Array( _

"SELECT GERMANY.Day_, GERMANY.Amount_, GERMANY.Category_, GERMANY.Description_" & Chr(13) & "" & Chr(10) & "FROM C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb.GERMANY GERMANY" & Chr(13) & "" & Chr(10) & "WHERE (GERMANY.Description_='COGS" _

, "')" & Chr(13) & "" & Chr(10) & "ORDER BY GERMANY.Day_")

__________________________________________________________________________________________________________________________________________________________

Come potete vedere, il percorso da cui accede al file Access è DBQ=C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb e la directory di default è DefaultDir=C:\Users\Matteo\Desktop\C" _

), Array( _

"ost Management Tool

In realtà, il file Excel ed il file Access sono all'interno della stessa Directory, dunque (per far funzionare l'applicazione su ogni computer) all'interno della macro VBA su Excel vorrei sostituire la stringa C:\Users\Matteo\Desktop\Cost Management Tool con qualcosa tipo ThisWorksheet.Path. Il problema è che questa istruzione in VBA, per questa applicazione, non funziona e credo sia dovuto al fatto che si interagisca con una query.

Qualcuno sa dirmi come risolvere il problema? Grazie a tutti in anticipo!

Microsoft 365 e Office | Excel | 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

Anonimo
2013-07-11T10:52:46+00:00

aiuto1 = ThisWorkbook.Path & "\CostDatabase.accdb"

    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _

        "ODBC;DSN=MS Access Database;DBQ="&aiuto1&";DefaultDir=C:\Users\Matteo\Desktop\C" _

        ), Array( _

Hai ragione, non me n'ero accorto. Tuttavia, adesso ho scritto come vedi sopra, e ho un nuovo errore che dice "previsto separatore di elenco oppure )" nella stringa

DefaultDir=C:\Users\Matteo\Desktop\C" _

Spazia la '&' dal resto.

Andrea.

La risposta è stata utile?

0 commenti Nessun commento

9 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-07-11T10:31:12+00:00

    Qualche dettaglio in più: se sostituisco 

    DBQ=C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb

    con

    aiuto = ThisWorkbook.path & "\CostDatabase.accdb"

    DBQ = aiuto

    nonostante siano la stessa cosa (ho provato con un MsgBox e il risultato è lo stesso), mi dà il seguente errore:

    Accesso driver ODCB Microsoft Access non riuscito: Impossibile trovare il file "C:\Users\Matteo\Desktop\Cost Management Tool\aiut.mdb".

    Ciao Matteo,

    non puoi semplicemente fare così, DBQ fa parte di una stringa, perciò:

    aiuto = ThisWorkbook.path & "\CostDatabase.accdb"

    "ODBC;DSN=MS Access Database;DBQ=" & aiuto & ";... "

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-07-11T10:23:59+00:00

    Ciao Andrea, sì scusa, intendevo ThisWorkbook.path. L'ho scritto male nel messaggio ma bene nella macro :)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-07-11T10:22:40+00:00

    Qualche dettaglio in più: se sostituisco 

    DBQ=C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb

    con

    aiuto = ThisWorkbook.path & "\CostDatabase.accdb"

    DBQ = aiuto

    nonostante siano la stessa cosa (ho provato con un MsgBox e il risultato è lo stesso), mi dà il seguente errore:

    Accesso driver ODCB Microsoft Access non riuscito: Impossibile trovare il file "C:\Users\Matteo\Desktop\Cost Management Tool\aiut.mdb".

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-07-11T10:18:21+00:00

    Salve a tutti, 

    ho il seguente problema. Ho creato una macro su VBA (registrata) che importa dati da una Microsoft Query (che apre un Database Access ed importa i dati da una tabella presente all'interno). Adesso ho il seguente problema: avendo registrato la macro, il percorso diviene automaticamente il seguente...

    _________________________________________________________________________________________________________________________________________________________

    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _

    "ODBC;DSN=MS Access Database;DBQ=C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb;DefaultDir=C:\Users\Matteo\Desktop\C" _

    ), Array( _

    "ost Management Tool;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _

    )), Destination:=Range("$AA$3")).QueryTable

    .CommandText = Array( _

    "SELECT GERMANY.Day_, GERMANY.Amount_, GERMANY.Category_, GERMANY.Description_" & Chr(13) & "" & Chr(10) & "FROM C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb.GERMANY GERMANY" & Chr(13) & "" & Chr(10) & "WHERE (GERMANY.Description_='COGS" _

    , "')" & Chr(13) & "" & Chr(10) & "ORDER BY GERMANY.Day_")

    __________________________________________________________________________________________________________________________________________________________

    Come potete vedere, il percorso da cui accede al file Access è DBQ=C:\Users\Matteo\Desktop\Cost Management Tool\CostDatabase.accdb e la directory di default è DefaultDir=C:\Users\Matteo\Desktop\C" _

    ), Array( _

    "ost Management Tool

    In realtà, il file Excel ed il file Access sono all'interno della stessa Directory, dunque (per far funzionare l'applicazione su ogni computer) all'interno della macro VBA su Excel vorrei sostituire la stringa C:\Users\Matteo\Desktop\Cost Management Tool con qualcosa tipo ThisWorksheet.Path. Il problema è che questa istruzione in VBA, per questa applicazione, non funziona e credo sia dovuto al fatto che si interagisca con una query.

    Qualcuno sa dirmi come risolvere il problema? Grazie a tutti in anticipo!

    Ciao Matteo,

    forse intendevi: ThisWorkBook.Path?

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento