Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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

Viele Datenbanknamen ändern

Viele Datenbanknamen ändern
Gernot
Hallo zusammen
Stelle meine Anfrage vom 24.02.2011 noch einmal ein. Vielleicht hat doch jemand von Ihnen eine Idee? Vielen Dank.
Liebe Grüße
Gernot
Hallo zusammen
Ich habe eine Exceldatei, in der aus über 50 Datenbanken Energiewerte gelesen werden. Die SQL-Abfrage sieht so aus:
SELECT T_Kanal_1.F_Datum, T_Kanal_1.F_ARBEITSumme_NT
FROM `J:\Energie\PROJEKTE\00078340\ENERGIE10`.T_Kanal_1 T_Kanal_1
Der Name der Datenbanken ist immer identisch, nur der Speicherort variiert. Die Abfragen greifen auf die Datenbanken für das Jahr 2010 zu (ENERGIE10.mdb). Um Daten für 2011 zu erhalten, müsste ich jede einzelne Abfrage in Excel bearbeiten und ENERGIE10 durch ENERGIE11 ersetzen.
Hat jemand von Ihnen eine Idee, wie ich in allen SQL-Abfragen in einem Rutsch die 2011-Datenbanknamen eintragen kann? Ich habe keinerlei Infos gefunden, wie ich SQL-Abfragen einer Exceltabelle auslesen bzw. "automatisiert" manipulieren kann.
Vielen Dank für jeden Tipp im Voraus.
Gruß
Gernot

Hi Gernot
Wenn sich alle SQL-Abfragen im VBA-Code befinden, nutze doch die Suchen/Ersetzen-Funktion im VBA-Editor.
Suchen nach: ENERGIE10
(alle) ersetzen durch: ENERGIE11
Hilfts?
Ciao
Thorsten


Hallo Thorsten
Danke für die Antwort, die leider nicht hilft. Die SQL-Abfragen sind nicht im VBA-Modul enthalten.
Ich komme an den Text der SQL-Abfrage, indem ich
1.) Rechtsklick auf die Datentabelle
2.) Abfrage bearbeiten wähle
3.) Klick auf Abbruch (weil ich nicht die ganze Abfrage durchklicken möchte)
4.) Möchten Sie die Abfrage mit MS Query weiter bearbeiten? - Klick auf "JA"
5.) Menü Ansicht - SQL wähle
Ich habe alle Abfragen mal exportiert und könnte diese mit modernen Editoren bearbeiten. Aber dann müsste ich auch alle wieder manuell in das Excelsheet einbinden. Das Editieren über den SQL-Editor bedeutet auch, alle Abfragen einzeln zu bearbeiten.
Ich suche aber eine Möglichkeit, wie ich alle SQL-Abfragen auf einmal bearbeiten kann, nicht jede einzelne für sich.
Hoffe, es hat jemand eine Idee, wo die SQL-Codes versteckt sind und wie man dran kommt, ohne sie einzeln zu öffnen.
Gruß und Danke für den guten Willen.
Gernot
Hi Gernot
So aus der Ferne, ohne einen Blick auf deinen Computer, kann ich auch nich sehen, wo sich die SQLs "verstecken".
Vielleicht hilft es ja, wenn du mal eine Bsp-Datei erstellst und sie uns zeigst.
Ciao
Thorsten
Hallo Thorsten
Anbei die Datei, reduziert auf eine hochladbare Größe. Es sind deshalb nicht mehr alle Registerblätter enthalten.
https://www.herber.de/bbs/user/73760.zip
Die Datei enthält die Register mit den Daten, die per SQL mit den Datenbanken verbunden sind. Außerdem noch die Grafiken, die die Daten darstellen.
Hoffe, es hat jemand eine Idee, wie ich die SQL-Abfragen einfacher ändern kann, ohne sie alle einzeln öffnen zu müssen.
Danke für Ihre Bemühungen vorab.
Gruß
Gernot

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Viele Datenbanknamen ändern
07.03.2011 11:36:24
JoWE
Hallo Gernot,
in Excel generierte Abfragen können vor der Ausführung gespeichert werden.
Vorbelegter Speicherort für Abfragen ist: '\Anwendungsdaten\Microsoft\Abfragen'
Die Abfragen heißen z.B. '*.dqy 'oder auch '*.dsn'; es sind Textdateien also einfach zu editieren.
Du mußt alle Deine über 50 Abfragen speichern; entweder schon beim Erstellen oder über MS Query.
Nenne sie z.B. "MeineEnergieAbfrage1" bis "MeineEnergieAbfrage55", dann kannst Du alle gespeicherten Abfragen mit EXCEL-VBA innerhalb einer einzigen Programmschleife durchlaufen und den Begriff 'Energie10' durch 'Energie11' ersetzen (siehe dazu Excel-Online-Hilfe 'Open-Anweisung').
Óder erstelle die über 50 Abfragen mit Excel-VBA dynamisch in einer Schleife in der Du den jweiligen Speicherort z.B. aus einer bestimmten Tabelle deines Workbooks anpasst.
Gruß
Jochen
Anzeige
AW: Viele Datenbanknamen ändern
07.03.2011 13:03:20
Gernot
Hallo Jochen
Danke für die Tipps. Wenn ich das richtig verstanden habe, greift man bei beiden Lösungen nicht auf die in der Exceldatei enthaltenen Abfragen zurück, sondern nutzt extern gespeicherte Abfragen (habe ich anfangs genutzt) bzw. programmiert eine VBA-Sequenz, die die Daten einliest.
Leider helfen mir beide Lösungen nicht. In den in Excel integrierten SQL-Abfragen ist der Name der Datenbank identisch, weil er in jedem Verzeichnis so vorkommt. Nicht identisch sind die SQL-Abfragen im Einzelnen im Sinne von
- manchmal eine Spalte, mal zwei
- meistens ohne Einschränkungen, manchmal aber mit (Filter)
Deshalb kann ich keine identische Routine in Schleifen laufen lassen. Die extern gespeicherten Abfragen per VBA aufzurufen und so die Daten in Excel zu bekommen, scheint mir in etwa gleich aufwendig, als wenn ich die SQL-Sequenz direkt in Excel öffne, um sie zu editieren, da ich die Abfragen extern mit Editoren Abfrage für Abfrage editieren müsste.
Ich hoffe eigentlich auf einen Trick, mit dem man die in Excel irgendwo integrierte SQL-Abfragen ändern kann.
Anzeige
AW: Viele Datenbanknamen ändern
07.03.2011 13:22:35
Kawensmann
Hallo,
du könntest folgendes probieren:
Sub UpdateSQL()
Dim qt As QueryTable
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Sheets
For Each qt In sh.QueryTables
qt.CommandText = Replace(qt.CommandText, "Energie10", "Energie11")
'qt.Connection = Replace(qt.Connection, "Energie10", "Energie11")
Next
Next
End Sub
Bin mir nicht sicher, ob auch die Connection angepasst werden muss ...
Gruß
Kawensmann
AW: Viele Datenbanknamen ändern
07.03.2011 17:05:42
Gernot
Hallo Kawensmann
Super, das war ein toller Tipp! Anbei der Code nach deinem Vorschlag mit drei kleinen Ergänzungen, die mir die Arbeit erleichtern. Vielen Dank für deine Hilfe.
Gruß
Gernot
Sub UpdateSQL()
Dim alt As Integer
Dim neu As Integer
Dim qt As QueryTable
Dim sh As Worksheet
alt = 10 'für das alte Jahr, z.B. 10 für 2010
neu = 11 'für das neue Jahr, z.B. 11 für 2011
For Each sh In ActiveWorkbook.Worksheets
For Each qt In sh.QueryTables
qt.CommandText = Replace(qt.CommandText, "ENERGIE" & alt, "ENERGIE" & neu)
' "ENERGIE" & alt erzeugt alten Datenbanknamen, z.B. ENERGIE10
qt.Connection = Replace(qt.Connection, "ENERGIE" & alt, "ENERGIE" & neu)
' Verbindung zur Datenbank wird hergestellt, vermeidet Fehler beim späteren Aufruf  _
der Abfrage in Excel
qt.CommandText = Replace(qt.CommandText, "Energie" & alt, "ENERGIE" & neu)
' Abfrage unterscheidet Groß- und Kleinschreibung, deshalb noch einmal dieselbe  _
Prozedur
qt.Connection = Replace(qt.Connection, "Energie" & alt, "ENERGIE" & neu)
Next
Next
ActiveWorkbook.RefreshAll ' Damit alle SQL-Abfragen aktualisiert und die Daten angezeigt  _
werden.
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige