Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel-Tabelle mit SQL-Daten sehr langsam

Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 10:16:07
dirk
Hallo,
ich habe eine Excel-Tabelle, in die ich Daten (Mitarbeiterzeiten) aus einer SQL-Datenbank (aus Netzlaufwerk) importiere.
Für jeden Monat habe ich ein Arbeitsblatt angelegt, in das ich die jeweiligen Zeiten kopiere. Funktioniert soweit alles, die Anzahl der Datensätze ist überschaubar (ca. 1000 insgesamt, ca. 200 pro Arbeitsblatt).
Nur: Die Reaktionszeiten beim Arbeiten mit dieser Datei sind fürchterlich hoch, ein Anklicken einer Zelle, kopieren, selbst Wechsel auf ein anderes Arbeitsblatt etc. dauern teilweise 1-2 MINUTEN!
Am Netzwerk kann es nicht liegen, 100Mb/sec, das Arbeiten mit anderen großen Excel-Dateien (z.B. 5 MB) vom Netz liegt im Sekundenbereich.
Hat jemand auch mal so ein Phänomen gehabt und vielleicht sogar eine Lösung/Abhilfe ;-) ?

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 10:42:00
Renee
Hi Dirk,
Zu wenig Information um zu helfen...
1. Wie werden die Daten importiert? Verknüpft, Queryobjekct im Blatt, VBA, DAO, ODBC......
2. Was für Makros/Funktionen enthält die Tabelle ?
3. Existieren Verknüpfungen zu andere Objekten ?
etc..etc..
Greetz Renee

Anzeige
AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 11:07:57
dirk
Hi Renee,
o.k., dann hier weitere Details und Antworten zu Deinen Fragen:
1. Wie werden die Daten importiert? Verknüpft, Queryobjekct im Blatt, VBA, DAO, ODBC......
- über "Externe Daten importieren" wurde eine Datenabfrage erstellt: über Microsoft Query und einem SQL-String/Anweisung werden Daten aus einer Oracle-Datenbank importiert und in Spalte A bis C geschrieben, ca. 800-100 Datensätze.
Dies geschieht per ODBC, dazu ist die Einrichtung eines ODBC-Datenbank-treibers auf dem Rechner notwendig (Verwaltung - Datenquellen (ODBC) - System-DSN - Oracle-Treiber).
Die ODBC kann die Verlangsamung aber m.E. nicht verursachen, da andere Dateien mit ähnlichen Abfragen performant sind.
2. Was für Makros/Funktionen enthält die Tabelle ?
nur ein paar einfachere Makros zur Bedienung wie:Datei schließen, Zelle mit aktuellem Datum ausfüllen etc. und Aktualisierung der Datenabfrage; daran kann es nicht liegen, die Makros laufen schnell.
3. Existieren Verknüpfungen zu andere Objekten ?
- nein

Anzeige
AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 11:17:00
Renee
Hi Dirk,
Wenn Du die Tabelle offen hast und im Direktfenster des VB-Editors diese Zeile eingibst:

Msgbox Activesheet.querytables().count

was für eine Zahl wird rausgeschrieben?
Wie gross (in KB) ist die Tabelle?
Greetz Renne

Anzeige
AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 11:31:00
dirk
Hi Renee,
die messageBox gibt aus: "25" ...
also lediglich 25KB?! (ist das die Größe der importierten Daten(-tabelle)?)
dirk

AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 11:32:00
Ramses
Hallo
Die 25 bedeutet, dass du 25 Abfragen in deiner Tabelle hast :-)
Gruss Rainer

AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 11:36:00
Renee
Hello Dirk,
Das was ich vermutet hab. Viele VBA-Bastler arbeiten mit Queryobjekten, ohne sie zu verstehen.
Da kommen oft von aufgezeichnetem Code Konstrukte zustande, die solche Objekte immer neu addieren, statt auf bestehende zu greifen und zu refreshen.
Also analysiere Deinen Code, vermutlich brauchst Du kaum 25 Abfragen und mit jedem Refresh wird's vermutlich eine mehr.
Greetz Renee

Anzeige
AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 12:44:57
dirk
dies ist mein Makro zum Aktualisieren der Daten:

Sub sql_daten_aktualisieren()
Sheets("SQL-Abfrage").Select
Range("A1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Range("E9").Select
End Sub


In der Tat brauche ich nur eine Abfrage, aber damit dürfte doch nur eine Abfrage refresht werden, oder?
Nach Durchführung der Aktualisierung bleibt es übrigens bei 25 Abfragen.
Noch was allgemein dazu:
Wie kann ich die Verknüpfung zur externen Datenquelle / die Abfrage in einer Tabelle wieder löschen?
Beim Kopieren der Daten in ein anderes Tabellenblatt "wandert" die Verknüpfung zu den Daten nämlich mit , obwohl ich nur die Werte einfüge.
Danke auf jeden Fall schon mal für die ersten Bemühungen!
gd

Anzeige
AW: Excel-Tabelle mit SQL-Daten sehr langsam
16.08.2007 13:39:00
Renee
Hi Dirk,
1. Stelle den Namen Deiner Querytable fest: Du auf A1, rechtsklick - Datenbereichs-Eigenschaften
2. Passe die erste Codezeile an
3. Lass das Löschmakro laufen:

Sub AlleAusserEinem()
Const sKeepQuery = "DiesesQueryBehalten"
Dim qt As QueryTable
For Each qt In ActiveSheet.QueryTables
If qt.Name  sKeepQuery Then qt.Delete
Next
End Sub


Nach einem Kopieren, kannst Du mit einer ähnlichen Routine die Queries löschen. Dabei bleiben die Daten erhalten nur die Queryobjekte verschwinden:


Sub AlleQueriesWeg()
Dim qt As QueryTable
For Each qt In ActiveSheet.QueryTables
qt.Delete
Next
End Sub


Greetz Renee

Anzeige
Lösung gefunden - Problem gelöst, danke!
16.08.2007 14:51:00
dirk
Hallo Renee,
habs mir auch noch mal genauer angeschaut und die Sache mit den Namen/Feldnamen/query tables rausgefunden:
In meiner Datei waren sage u. schreibe über 10.000 (!) Namen vergeben (= querytables)! Benötigt wird jedoch wie gesagt 1 Abfrage.
Bei jedem Aktualisieren u. Kopiervorgang (habe immer die ganzen Spalten kopiert) wird wohl ein neuer Name vergeben.
Habe die Löschung auch schon durchgeführt - mit den "Navigator Utilities" geht das sehr elegant und komfortabel. Bekannt?
Aber danke für Deinen Code - den werde ich in meine Aktualisier- und Kopiermakros mit einbauen.
Also, Du hast mich auf den rechten Lösungsweg gebracht und Deine Bemerkung über die VBA-Bastler stimmt wohl in diesem Fall.... ;-))
Danke nochmal, greetz Dirk

Anzeige
OT @Renee
16.08.2007 17:15:53
Ramses
Hallo Renee
Muss ich jetzt mal sagen:
Du bist ne echte Bereicherung für dieses Forum :-)
Gruss Rainer

AW: OT @Renee
16.08.2007 17:27:05
Renee
Hi Rainer,
Das ist ja mal Balsam auf die Seele einer sonst hinter vorgehaltener Hand "Computer-Dütschi" Genannten.
Und dann noch aus so kompetentem Mund... ähh meine Schreibers Hand....
Gracias Renee
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel-Tabelle mit SQL-Daten optimieren


Schritt-für-Schritt-Anleitung

  1. Datenverbindung überprüfen: Stelle sicher, dass die Verbindung zu deiner SQL-Datenbank korrekt eingerichtet ist. Gehe zu Daten > Externe Daten importieren > Datenbank abfragen und überprüfe die ODBC-Datenquelle.

  2. QueryTables analysieren: Öffne den Visual Basic Editor (Alt + F11) und gib im Direktfenster folgende Zeile ein, um die Anzahl der aktiven Abfragen zu überprüfen:

    Msgbox ActiveSheet.QueryTables().Count
  3. Überflüssige Abfragen entfernen: Wenn du feststellst, dass viele Abfragen vorhanden sind, wie im Fall von Dirk, kannst du diese mit einem VBA-Makro löschen. Nutze das folgende Skript, um alle QueryTables bis auf eine zu entfernen:

    Sub AlleAusserEinem()
       Const sKeepQuery = "DiesesQueryBehalten"
       Dim qt As QueryTable
       For Each qt In ActiveSheet.QueryTables
           If qt.Name <> sKeepQuery Then qt.Delete
       Next
    End Sub
  4. Datenaktualisierung optimieren: Wenn du Daten aus der SQL-Datenbank importierst, stelle sicher, dass du nur die erforderlichen Daten abfragst. Reduziere die Anzahl der Spalten und Zeilen, die importiert werden.

  5. Verknüpfungen entfernen: Um die Verknüpfungen zu löschen, kannst du das folgende Makro verwenden, welches alle QueryTables in der aktiven Tabelle entfernt:

    Sub AlleQueriesWeg()
       Dim qt As QueryTable
       For Each qt In ActiveSheet.QueryTables
           qt.Delete
       Next
    End Sub

Häufige Fehler und Lösungen

  • Excel reagiert langsam: Wenn Excel extrem langsam reagiert, überprüfe die Anzahl der QueryTables. Zu viele Abfragen können die Performance erheblich beeinträchtigen.

  • Datenbankverbindung trennen: Manchmal kann eine langsame Verbindung zur SQL-Datenbank die Ursache sein. Stelle sicher, dass deine Netzwerkverbindung stabil ist.

  • Makros optimieren: Überprüfe deine Makros auf Effizienz. Vermeide es, bei jedem Kopiervorgang neue Abfragen zu erstellen.


Alternative Methoden

  • Power Query nutzen: Wenn du mit großen Datenmengen arbeitest, kann Power Query eine bessere Performance bieten. Du kannst damit Daten effizienter aus einer SQL-Datenbank abfragen.

  • SQL-Daten direkt in Excel importieren: Verwende die Funktion Daten > Daten abrufen > Aus Datenbank, um deine SQL-Daten direkt in Excel zu importieren, anstatt über ODBC zu gehen.


Praktische Beispiele

  • Daten aus SQL-Datenbank abfragen: Nutze eine einfache SQL-Abfrage, um nur die benötigten Datensätze zu erhalten. Beispiel:

    SELECT * FROM Mitarbeiter WHERE Monat = 'Januar'
  • Excel-Tabelle in SQL importieren: Möchtest du Daten aus einer Excel-Tabelle in eine SQL-Datenbank importieren, kannst du dies über das Menü Daten > Datenbank tun.


Tipps für Profis

  • Hintergrundaktualisierung vermeiden: Wenn Excel sehr langsam reagiert, deaktiviere die Hintergrundaktualisierung, indem du BackgroundQuery:=False in deinem Makro setzt.

  • Datenbankindizes nutzen: Stelle sicher, dass die SQL-Datenbank optimiert ist, indem du Indizes für häufig abgefragte Spalten erstellst. Dies kann die Ladezeiten erheblich verbessern.

  • Einfache Abfragen bevorzugen: Nutze einfache, klare SQL-Abfragen, um die Effizienz zu steigern. Komplexe Abfragen können die Verarbeitung verlangsamen.


FAQ: Häufige Fragen

1. Warum ist Excel so langsam, wenn ich Daten aus einer SQL-Datenbank abfrage? Die häufigste Ursache ist eine hohe Anzahl an QueryTables oder schlecht optimierte SQL-Abfragen. Überprüfe, wie viele Abfragen in deiner Tabelle existieren.

2. Wie kann ich die Verknüpfungen zu externen Datenquellen in Excel löschen? Du kannst dies mit einem VBA-Makro tun, das alle QueryTables in der aktiven Tabelle entfernt, wie im oben beschriebenen Abschnitt.

3. Was kann ich tun, wenn meine SQL-Datenbank auch langsam ist? Prüfe die Netzwerkverbindung, optimiere die SQL-Abfragen und stelle sicher, dass die Datenbankindizes korrekt gesetzt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige