Ich würde gerne wissen, wie man eine Datenbanktabelle in Excel erstellt, damit sie mit ODBC verwendet werden kann
Ich möchte ODBC verwenden, und ich habe zwei Optionen, entweder MS Access oder Excel,
Wie Sie wahrscheinlich wissen, müssen Sie, um eine MS Access-Datei oder Excel-Datei als ODBC-Quelle anzugeben, folgen:
Verwaltungstools - & gt; Datenquellen (ODBC) - & gt; Wählen Sie Benutzer DSN - & gt; Wählen Sie entweder "Excel-Dateien" oder "MS Access-Datenbank" aus der Liste - & gt; Drücken Sie auf "Konfigurieren" - & gt; Schließlich wählen Sie die Datei (MS Access oder Excel) als ODBC-Quelle
Nun, es funktioniert gut mit MS Access, ich kann eine Verbindung zu der Datei herstellen und alle Tabellen sehen, die ich in
erstellt habeAber wenn es um Excel geht, obwohl ich eine Verbindung zu der Datei herstellen kann, kann ich die Tabelle, die ich in
erstellt habe, nicht sehenIch habe gerade "Tabelle" in der Registerkarte "Einfügen" verwendet, einige Kopfzeilen als Spaltennamen hinzugefügt und die Tabelle angegeben ein aussagekräftiger Name. Ist das der Weg, es zu tun?
Es gibt mehrere Möglichkeiten, wie Sie auf "Tabellen" -Daten in einer Excel-Arbeitsmappe verweisen können:
Sie werden ausführlich im Abschnitt "Excel-Daten mit Code auswählen" des Microsoft Knowledge Base-Artikels 257819 erläutert.
Die einfachste Möglichkeit besteht darin, die Daten auf einem separaten Blatt zu speichern, die Spaltennamen in die erste Zeile einzufügen (beginnend in Zelle A1) und dann die eigentlichen Daten in Zeile 2 zu beginnen, wie in diesem Fall
Zum Testen habe ich einen Benutzer-DSN mit dem Namen "odbcFromExcel" erstellt, der auf diese Arbeitsmappe verweist ...
... und dann das folgende VBScript ausgeführt, um die Verbindung zu testen:
%Vor%Die Ergebnisse waren
%Vor%Ich hoffe, das hilft bei der Verbindung mit Excel.
Als letzten Kommentar muss ich sagen, dass, wenn Sie etwas tun, das "mehrere Sekunden" in Excel benötigt, aber "dauert ungefähr 20-25 Minuten" in Access tun, dann stark vermuten, dass Sie Access in verwenden eine sehr ineffiziente Art und Weise, aber das ist ein Thema für eine andere Frage (wenn Sie es verfolgen wollen).
Wenn Sie Daten in eine Excel-Arbeitsmappe einfügen möchten, dann ist das möglich, aber beachten Sie, dass die Standardeinstellung für eine Excel-ODBC-Verbindung "schreibgeschützt" ist, so dass Sie auf "Optionen & gt; & gt;" und deaktivieren Sie das Kontrollkästchen:
Sobald das erledigt ist, der folgende Code ...
%Vor%... fügt in der Excel-Tabelle eine neue Zeile mit den bereitgestellten Daten ein.
Allerdings wird das Problem, dass keine "Tabellen" zur Auswahl stehen, wenn Sie Ihre "Sniffer" -App auf einen Excel-ODBC-DSN richten, immer noch nicht behoben.
Eine Sache, die Sie versuchen könnten, wäre, ein Excel-Blatt mit Spaltenüberschriften in Zeile 1 zu erstellen, dann diese ganzen Spalten auszuwählen und einen Excel "Defined Name" zu erstellen. Überprüfen Sie dann, ob Ihre "Sniffer" -App dies als einen "Tabellen" -Namen erkennt, den Sie auswählen können.
FWIW, ich habe den Namen myTable
als =Sheet1!$A:$C
in meiner Excel-Arbeitsmappe definiert, und dann funktionierte mein ursprünglicher Code sort , wenn ich SELECT * FROM [myTable]
verwendete:
Wie Sie sehen können, hat es den ersten "Datensatz" korrekt abgerufen, aber dann hat es das Ende der gültigen Daten nicht erkannt und hat weiterhin die ~ 1 Million Zeilen im Blatt gelesen.
Ich bezweifle sehr, dass ich mich noch mehr anstrengen werde, weil ich den anderen Kommentaren zustimme, dass die Verwendung von Excel als "ODBC-Datenbank" wirklich keine sehr gute Idee ist.
Ich schlage vor, dass Sie versuchen, herauszufinden, warum Ihre früheren Versuche, Access zu verwenden, so unbefriedigend waren. Wie ich schon sagte, es klingt für mich, als würde etwas einen wirklich schlechten Job bei der Interaktion mit Access machen.
Ich hatte kürzlich ein ähnliches Problem mit einigen Daten. Die Art und Weise, wie ich es geschafft habe, es zu umgehen, bestand darin, die Daten als einen Bereich A1: XY12345 auszuwählen und dann das Werkzeug Name definieren, um den Bereich zu benennen. Wenn Sie eine Verbindung zu der Excel-Arbeitsmappe über ODBC herstellen, wird dieser benannte Bereich als eine "Tabelle" angezeigt, während Bereiche, die Sie tatsächlich (pro Excel) als eine Tabelle definierten, nicht.