Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pfad in Queryabfrage aendern

Forumthread: 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
Anzeige

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
;
Anzeige

Infobox / Tutorial

Pfad in Excel Queryabfrage ändern


Schritt-für-Schritt-Anleitung

Um den Pfad in einer Excel Queryabfrage zu ändern, kannst du folgende Schritte befolgen:

  1. Öffne die Excel-Tabelle: Starte Excel und öffne die Datei, die die Queryabfrage enthält.
  2. Navigiere zu den Abfragen: Gehe zu Daten -> Abfragen und Verbindungen.
  3. Bearbeite die Abfrage: Klicke mit der rechten Maustaste auf die Abfrage und wähle Abfrage bearbeiten.
  4. Ändere die Verbindung: Im Abfrage-Assistenten kannst du den Pfad zu deiner Access-Datenbank anpassen. Achte darauf, dass der neue Pfad korrekt ist.
  5. Speichern: Klicke auf Daten an Excel zurückgeben. Wenn die Fehlermeldung "Syntaxerror in From-Klausel" erscheint, überprüfe den SQL-String sowie die Verbindungseinstellungen.

Wenn du weiterhin Probleme hast, könnte es hilfreich sein, den VBA-Code zu verwenden, den NoNet bereitgestellt hat, um den Pfad programmgesteuert zu ändern.


Häufige Fehler und Lösungen

  • Fehlermeldung: Syntaxerror in From-Klausel: Diese Fehlermeldung tritt auf, wenn die SQL-Abfrage nicht korrekt ist. Überprüfe alle Tabellen- und Feldnamen auf Schreibfehler.
  • Abfrage lässt sich nicht speichern: Stelle sicher, dass du die richtigen Berechtigungen hast und dass die Datenquelle verfügbar ist.
  • Falscher Pfad: Vergewissere dich, dass der angegebene Pfad zur Access-Datenbank korrekt ist und die Datei existiert.

Alternative Methoden

Wenn die oben genannten Schritte nicht funktionieren, gibt es alternative Methoden:

  • VBA-Code: Wie im Beitrag von NoNet beschrieben, kannst du einen VBA-Code verwenden, um den Pfad und den SQL-String der Abfrage zu ändern. Hier ist ein Beispiel:
Sub QRYPfadAendern()
    ' ... Dein VBA-Code hier ...
End Sub
  • Neue Abfrage erstellen: Manchmal ist es einfacher, eine neue Abfrage von Grund auf zu erstellen, anstatt die bestehende zu bearbeiten. Achte darauf, die Access-Datenbank erneut auszuwählen.

Praktische Beispiele

Hier sind einige Beispiele, wie du den Pfad in der Queryabfrage ändern kannst:

  1. VBA für den Pfad: Wenn du den Pfad direkt im VBA anpassen möchtest, nutze den folgenden Code:

    strDBQ = Replace(strDBQ, "C:\AlterPfad\Datenbank.accdb", "C:\NeuerPfad\Datenbank.accdb")
  2. SQL-Abfrage Beispiel: Um die SQL-Abfrage anzupassen, kannst du den Code verwenden, um Tabellennamen zu ändern:

    strSQL = Replace(strSQL, "`AlteTabelle`", "`NeueTabelle`")

Tipps für Profis

  • Verwende relative Pfade: Wenn möglich, nutze relative Pfade anstelle fester Pfade, um die Flexibilität zu erhöhen, insbesondere wenn die Datei auf verschiedenen Rechnern verwendet wird.
  • Überprüfe Abfrageeinstellungen: Überprüfe die Abfrageoptionen regelmäßig, um sicherzustellen, dass sie mit der aktuellen Struktur der Datenquelle übereinstimmen.
  • Backup erstellen: Erstelle immer ein Backup deiner Excel-Datei, bevor du Änderungen an Abfragen oder VBA vornimmst, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Was bedeutet "Syntaxerror in From-Klausel"? Diese Fehlermeldung bedeutet, dass die SQL-Abfrage nicht korrekt formatiert ist oder dass eine Tabelle oder ein Feld nicht gefunden werden kann.

2. Kann ich den Pfad auch ohne VBA ändern? Ja, du kannst den Pfad über den Abfrage-Assistenten in Excel ändern, aber es kann hilfreich sein, VBA zu verwenden, wenn du mehrere Abfragen oder komplexe Änderungen vornehmen möchtest.

3. Welche Excel-Version benötige ich? Die oben genannten Schritte und Codes sollten in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2016 und später.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige