Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pfad in Queryabfrage aendern

Pfad in Queryabfrage aendern
andy
Hi leutz,
habe mich hier mal etwas im Forum eingelesen, da ich schon öfter interessante Lösungen hier gefunden habe.
Nun habe ich aber zu einem speziellen Problem eine Frage, zu der ich leider nirgendwo eine Lösung finden konnte und hoffe sehr, mir kann hier jemand helfen.
Ich habe eine Excel-Tabelle in der eine Abfrage gespeichert ist. Die Abfrage bezieht sich auf eine Accessdatenbank und funktioniert tadellos. Leider wurde diese Excel-Tabelle nicht von mir erstellt.
Nun hat sich leider der Speicherort und der Name der Datenbank geändert. Ich versuche jetzt schon lange Zeit den Pfad anzupassen, komme aber leider nicht weiter.
Das Problem ist schon, selbst wenn ich die vorhandene Abfrage bearbeiten will, bekomme ich beim speichern oder beim Daten an Excel zurückgeben schon folgende Fehlermeldung: Syntaxerror in From-Klausel
Ich gehe auf Daten, Abfrage bearbeiten, danach oeffnet sich der Abrageassistent und ich gehe weiter durch die folgenden Fenster. Wenn ich am Ende bin und auf Daten an Excel zurueckgeben klicke kommt dann die Fehlermeldung.
Vielleicht hat ja jemand ne Idee, was ich verkehrt mache oder wie ich auf andere Art und Weise den Pfad aendern kann.
Ich habe auch schon versucht, eine neue Abfrage zu erstellen, ich kann im Assistent die Access-Tabelle auswaehlen und im folgenden Fenster auch die Datenfelder auswaehlen aber wenn ich am Ende die Abfrage speichern will bzw. auf Daten an excel zurueckgeben, kommt genau dieselbe Fehlermeldung.
Schon mal vielen Dank fuer die Hilfe
Gruss Andy

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
VBA : Pfad und SQL-Code in Queryabfrage ändern
17.07.2009 12:22:08
NoNet
Hallo Andy,
das habe ich vor einiger Zeit auch mal selbst benötigt (Pfad der abgefragten Datei und SQL-String ändern - jeweils XLS-Dateien).
Dazu habe ich mir folgenden Code programmiert - evtl. kannst Du ihn an Deine Bedürfnisse anpassen :
Sub QRYPfadAendern()
'Ändert den vorgegebenen Pfad der Mappe in der Query auf den Pfad der AKTUELLEN MAPPE.
'15.05.2009, NoNet - www.excelei.de (z.Zt. Down !)
'Original-Pfad war z.B. :
'ODBC;DSN=Excel Files;DBQ=C:\Vorlagen\xl\Query-Abfrage doppelte Löschen.xls;
'DefaultDir=C:\Vorlagen\xl;DriverId=790;MaxBufferSize=2048;PageTimeout=5;
'wird geändert zu (Pfad der aktuellen Mappe) :
'ODBC;DSN=Excel Files;DBQ=C:\Auswertung\2009\Auswertung.xls;
'DefaultDir=C:\Auswertung\2009\;DriverId=790;MaxBufferSize=2048;PageTimeout=5;
Dim strDBQ As String, strPfad As String, strDefault As String
Dim intDBQ As Integer, intDIR As Integer, intDriver As Integer
strDBQ = ActiveSheet.QueryTables(1).Connection  'Erste Query des aktuellen Tabellenblattes
If InStr(strDBQ, "DBQ=") Then
intDBQ = InStr(strDBQ, "DBQ=") + 4
intDIR = InStr(intDBQ, strDBQ, ";DefaultDir=")
strDBQ = Replace(strDBQ, Mid(strDBQ, intDBQ, intDIR - intDBQ), ActiveWorkbook.FullName)
intDIR = InStr(strDBQ, ";DefaultDir=")
intdrive = InStr(intDIR, strDBQ, ";DriverId=")
strDBQ = Replace(strDBQ, Mid(strDBQ, intDIR + 12, intdrive - intDIR - 12),  _
ActiveWorkbook.Path)
ActiveSheet.QueryTables(1).Connection = strDBQ
End If
End Sub
Sub SQLAbfrageAnpassen()
'Ändert den vorgegebenen Abfrage-SQL-String der Mappe in den SQL-String der aktuellen Mappe. _
'15.05.2009, NoNet - www.excelei.de (z.Zt. Down !)
'Original-SQL-String war z.B. :
'SELECT `Daten$`.Nummer, `Daten$`.Name, `Daten$`.Vorname, `Daten$`.Ort, `Daten$`. _
Geburtsdatum,
'`Daten$`.Wert  FROM {oj `Daten$` `Daten$` LEFT OUTER JOIN `Ausschluss$` `Ausschluss$`
'ON `Daten$`.Nummer = `Ausschluss$`.Nummer}  WHERE (`Ausschluss$`.Nummer Is Null)
'wird geändert zu (Blattnamen und Überschriften der aktuellen Mappe) :
'SELECT `Liste$`.Nr, `Liste$`.Name, `Liste$`.Vorname, `Liste$`.Ort, `Liste$`.Geburtsdatum,
'`Liste$`.Wert  FROM {oj `Liste$` `Liste$` LEFT OUTER JOIN `Bereits beendet$` `Bereits  _
beendet$`
'ON `Liste$`.Nr = `Bereits beendet$`.Nr}  WHERE (`Bereits beendet$`.Nr Is Null)
Dim strSQL As String
strSQL = ActiveSheet.QueryTables(1).Sql
strSQL = Replace(strSQL, "`Daten$`", "`Liste$`")                'Name der Tabelle ändern
strSQL = Replace(strSQL, "`Ausschluss$`", "`Bereits Beendet$`") 'Name eines Feldes ändern
strSQL = Replace(strSQL, ".Nummer", ".Nr")                      'Name eines Feldes ändern
ActiveSheet.QueryTables(1).Sql = strSQL
End Sub
Anstelle ActiveWorkbook.FullName kannst Du im ersten SUB eine andere Datei angeben, z.B. C:\Excel\Daten\IrgendeineMappe.xls
Die Änderung auf eine ACCESS-MDB bekommst Du selbst hin, oder ?
Gruß, NoNet
Anzeige
AW: VBA : Pfad und SQL-Code in Queryabfrage ändern
18.07.2009 12:06:08
andy
Hallo NoNet,
vielen Dank fuer Deine schnelle Antwort, bin leider gerade erst nach Hause gekommen um zu antworten.
Deine Lösung ist interessant und ich werde das mal versuchen (hoffe, ich komme zurecht, sonst frage ich nochmal.)
Aber das ist eigentlich nicht wirklich das, was ich wissen wollte. Der Ersteller derTabelle hat das auch irgendwie ohne VBA-Code hinbekommen und ich haette halt gerne gewusst wie er das gemacht hat.
In der Tabelle ist die Abfrage mit gespeichert, nicht in einer separaten Datei, da man die Tabelle einzeln speichern und auf einem anderen Rechner benutzen kann. Der Pfad der Accessdatenbank ist auf den verwendeten Rechnern gleich.
Aber wie oben schon beschrieben, bei mir kommt sowohl beim aendern der Abfrage sowie auch bei dem Versuch einen neue abfrage mit dem Assistenten zu erstellen immer die gleiche Fehlermeldung von wegen syntaxerror in der From-Klausel
Der Ersteller der Tabelle muss das ja aber auch irgendwie geschafft haben, da ja kein VBA-Code fuer den Aufruf existiert.
Hoffe sehr auf weitere Hilfe.
Gruss andy
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige