ExcelADO zeigt, wie ADO zum Lesen und Schreiben von Daten in Excel-Arbeitsmappen verwendet wird

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 278973 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
278973 ExcelADO demonstrates how to use ADO to read and write data in Excel workbooks
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Zusammenfassung

Das Beispiel "ExcelADO.exe" zeigt, wie Sie ActiveX Data Objects (ADO) mit dem Microsoft Jet OLE DB 4.0 Provider zum Lesen und Schreiben von Daten in Microsoft Excel-Arbeitsmappen verwenden können.

Weitere Informationen

Die folgende Datei steht im Microsoft Download Center zum Download zur Verfügung:
ExcelADO.exe
Veröffentlichungsdatum: 12.12.2000

Weitere Informationen über das Herunterladen von Microsoft Support-Dateien finden Sie im folgenden Artikel der Microsoft Knowledge Base:
119591 So erhalten Sie Microsoft Support-Dateien im Internet
Microsoft hat diese Datei auf Viren überprüft. Microsoft hat dazu die neueste Software zur Virenerkennung verwendet, die zum Zeitpunkt der Bereitstellung verfügbar war. Die Datei befindet sich auf Servern mit verstärkter Sicherheit, wodurch nicht autorisierte Änderungen an der Datei weitestgehend verhindert werden.

Gründe für die Verwendung von ADO

Wenn Sie mit ADO Daten in eine Excel-Arbeitsmappe übertragen oder aus einer solchen auslesen, profitieren Sie als Entwickler von mehreren Vorteilen gegenüber der Verwendung der Excel-Automatisierung:
  • Verarbeitungsgeschwindigkeit: Microsoft Excel ist ein Out-of-Process-ActiveX-Server. ADO wird "in-process" ausgeführt, und kommt daher ohne zeitintensive Out-of-Process-Aufrufe aus.
  • Skalierbarkeit: Für Webanwendungen ist die Automatisierung von Microsoft Excel oft keine optimale Lösung. ADO bietet Ihnen eine besser skalierbare Lösung zum Verarbeiten von Daten in einer Arbeitsmappe.
ADO kann ausschließlich zum Übertragen von Rohdaten in eine Arbeitsmappe verwendet werden. Sie können mit ADO keine Formate oder Formeln auf Zellen anwenden. Sie können jedoch Daten in eine vorformatierte Arbeitsmappe übertragen. Die Formatierungen bleiben dabei erhalten. Falls Sie nach dem Einfügen der Daten eine bedingte Formatierung benötigen, können Sie dies mittels der Automatisierung oder mit einem Makro in der Arbeitsmappe bewerkstelligen.

Hinweise zu Jet OLE DB Provider in Verbindung mit Excel-Arbeitsmappen

Mit dem Microsoft Jet-Datenbankmodul können Sie über nachträglich zu installierende ISAM-Treiber (ISAM = Indexed Sequential Access Method) auf Daten in Dateien zusätzlicher Datenbankformate zugreifen, z. B. auf Excel-Arbeitsmappen. Um externe Formate zu öffnen, die vom Microsoft Jet 4.0 OLE DB Provider unterstützt werden, geben Sie den Datenbanktyp in den erweiterten Eigenschaften der Verbindung an. Der Jet OLE DB Provider unterstützt in Verbindung mit Excel-Arbeitsmappen die folgenden Datenbanktypen:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
Hinweis: Verwenden Sie den Excel 5.0-Quelldatenbanktyp für Arbeitsmappen von Microsoft Excel 5.0 und 7.0 (95) und den Excel 8.0-Quelldatenbanktyp für Arbeitsmappen von Excel 8.0 (97) und 9.0 (2000). Im Beispiel "ExcelADO.exe" werden Arbeitsmappen im Excel 97-Format und Excel 2000-Format verwendet.

Das folgende Beispiel zeigt eine ADO-Verbindung mit einer Excel 97-Arbeitsmappe (bzw. Excel 2000-Arbeitsmappe):
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Book1.xls"
    '....
    .Close
End With
				
-oder-
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
Konventionen für die Benennung von Tabellen

Sie können auf mehrere Arten auf eine Tabelle oder einen Bereich in einer Excel-Arbeitsmappe verweisen:
  • Verwenden Sie den Namen des Tabellenblatts gefolgt von einem Dollarzeichen (z. B. [Sheet1$] oder [My Worksheet$]). Eine Tabelle in einer Arbeitsmappe, auf die so verwiesen wurde, besteht aus dem gesamten Bereich, der von dem Tabellenblatt aufgespannt wird.
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
    					
  • Verwenden Sie einen Bereich mit einem festgelegten Namen (z. B. [Table1]).
    oRS.Open "Select * from Table1", oConn, adOpenStatic
    					
  • Verwenden Sie einen Bereich mit einer bestimmten Adresse (z. B. [Sheet1$A1:B10]).
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
    					
Tabellenüberschriften

In einer Excel-Arbeitsmappe wird standardmäßig von der ersten Zeile eines Bereichs angenommen, dass es sich um Spaltenüberschriften (bzw. Feldnamen) handelt. Wenn die erste Zeile Spaltenüberschriften enthält, können Sie in den erweiterten Eigenschaften der Verbindungszeichenfolge HDR=NO angeben. Wenn die erste Zeile keine Spaltenüberschriften enthält, benennt der OLE DB Provider automatisch die Felder für Sie (wobei F1 das erste Feld repräsentiert, F2 das zweite, usw.).

Datentypen

Im Gegensatz zu herkömmlichen Datenbanken gibt es bei Excel-Tabellen keine Möglichkeit, die Datentypen der Spalten direkt zu bestimmen. Der OLE DB Provider untersucht stattdessen eine gewisse Anzahl von Zeilen in einer Spalte, um den Datentyp des Feldes zu "erraten". Die Anzahl der untersuchten Zeilen beträgt standardmäßig acht (8); Sie können die Anzahl der zu untersuchenden Zeilen ändern, indem Sie in den erweiterten Eigenschaften der Verbindungszeichenfolge für MAXSCANROWS einen Wert zwischen 1 und 16 angeben.

Im Beispiel enthaltene Dateien

Die Datei "ExcelADO.exe" enthält ein standardmäßiges Visual Basic-Projekt (EXE), Active Server Pages (ASP), Excel 97- und Excel 2000-Arbeitsmappen als Vorlagen und eine Microsoft Access 2000-Datenbank. Die folgenden Dateien sind enthalten:

Standardmäßiges Visual Basic-Projekt (EXE)
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Active Server Pages
  • EmpData.asp
  • Orders.asp
Microsoft Excel-Arbeitsmappen
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Microsoft Access-Datenbank
  • Data.mdb

Verwenden des Beispiels

Extrahieren Sie den Inhalt der EXE-Datei in einen Order.

So verwenden Sie das Visual Basic-Projekt:
  1. Öffnen Sie in Visual Basic die Datei "ExcelADO.vbp".
  2. Wählen Sie im Menü Projekt die Option Verweise, und erstellen Sie Verweise zu Microsoft ADO Ext. for DDL and Security und Microsoft ActiveX Data Objects Library. Dieser Beispielcode funktioniert sowohl mit ADO 2.5 als auch ADO 2.6. Wählen Sie also die Version, die auf Ihrem Computer vorhanden ist.
  3. Drücken Sie die Taste [F5], um das Programm auszuführen. Ein Demonstrationsformular wird angezeigt.
  4. Klicken Sie auf Sample 1. Das Beispiel erstellt eine Kopie von "OrdersTemplate.xls". Es stellt dann mittels ADO eine Verbindung mit der Arbeitsmappe her und öffnet anschließend ein Recordset für eine Tabelle, die durch einen festgelegten Bereich in der Arbeitsmappe definiert wird. Der Name des Bereichs lautet Orders_Table. Dann werden die ADO-Methoden AddNew und Update zum Hinzufügen von Datensätzen (bzw. Zeilen) in dem festgelegten Bereich der Arbeitsmappe verwendet. Nachdem die Zeilen hinzugefügt wurden, wird die ADO-Verbindung (Connection) geschlossen, und die Arbeitsmappe wird in Microsoft Excel angezeigt. Gehen Sie folgendermaßen vor, um diese Schritte nachzuvollziehen:
    1. Wählen Sie in Excel im Menü Einfügen die Option Name und dann die Option Definieren.
    2. Wählen Sie in der Liste definierter Namen den Eintrag Orders_Table. Sie werden feststellen, dass unter dem definierten Namen die neu hinzugefügten Datensätze aufgeführt sind. Der definierte Name wird zusammen mit der BEREICH.VERSCHIEBEN-Funktion von Excel dazu verwendet, die Summe der in auf dem Tabellenblatt hinzugefügten Daten zu berechnen.
    3. Beenden Sie Microsoft Excel, und gehen Sie zu Visual Basic zurück.
  5. Klicken Sie auf Sample 2. Dieses Beispiel erstellt eine Kopie von "EmpDataTemplate.xls". Es stellt mittels ADO eine Verbindung mit der Arbeitsmappe her, und verwendet die Execute-Methode der ADO-Verbindung zum Einfügen von Daten (INSERT INTO in SQL) in die Arbeitsmappe. Die Daten werden in festgelegten Bereichen (bzw. Tabellen) in der Arbeitsmappe eingefügt. Nach dem Übertragen der Daten wird die Verbindung geschlossen, und die resultierende Arbeitsmappe wird in Excel angezeigt. Beenden Sie Microsoft Excel, nachdem Sie sich die Arbeitsmappe angesehen haben, und gehen Sie zu Visual Basic zurück.

  6. Klicken Sie auf Sample 3. Das Beispiel erstellt eine Kopie von "ProductsTemplate.xls". Es verwendet die Microsoft ADOX-Objektbibliothek (ADO Extensions 2.1 for DDL and Security) zum Hinzufügen einer neuen Tabelle (oder eines neuen Tabellenblatts) in der Arbeitsmappe. Dann wird ein ADO-Recordset für die neue Tabelle erstellt, und Daten werden mittels der Methoden AddNew und Update hinzugefügt. Nachdem die Zeilen hinzugefügt wurden, wird die ADO-Verbindung (Connection) geschlossen, und die Arbeitsmappe wird in Excel angezeigt. Die Arbeitsmappe enthält für das Ereignis Open der Arbeitsmappe VBA-Makrocode (VBA = Visual Basic für Applikationen). Das Makro wird ausgeführt, wenn die Arbeitsmappe geöffnet wird. Wenn das neue Tabellenblatt "Products" in der Arbeitsmappe bereits vorhanden ist, formatiert das Makro das Tabellenblatt und löscht sich dann selbst. Diese Vorgehensweise erlaubt es dem Webentwickler, den Code für das Formatieren weg vom Webserver auf den Client zu verlegen. Eine Webanwendung könnte eine formatierte Arbeitsmappe mit Daten an den Client übertragen und dann das Ausführen von Makrocode zulassen, der dann bedingte Formatierungen durchführt, die in Form einer Vorlage nicht auf dem Client ausgeführt werden könnten.

    Hinweis: Um den Makrocode zu untersuchen, zeigen Sie das Modul ThisWorkbook im VBA-Projekt von "ProductsTemplate.xls" an.

  7. Klicken Sie auf Sample 4. Dieses Beispiel führt zu den gleichen Ergebnissen wie Beispiel 1, aber die Vorgehensweise beim Übertragen der Daten ist etwas anders. In Beispiel 1 wurden die Datensätze (bzw. Zeilen) einzeln in der Arbeitsmappe hinzugefügt. In Beispiel 4 werden die Datensätze als Block hinzugefügt, indem die Excel-Tabelle mit einer Access-Datenbank verknüpft wird. Danach wird eine Datenbankabfrage ausgeführt (INSERT INTO..SELECT FROM), die Datensätze aus einer Tabelle der Access-Datenbank in der Excel-Tabelle einfügt. Nach der Übertragung wird die Verknüpfung zwischen der Excel-Tabelle und der Access-Datenbank wieder aufgehoben, und die resultierende Arbeitsmappe wird in Excel angezeigt. Beenden Sie Excel, und gehen Sie zu Visual Basic zurück.

  8. Das letzte Beispiel zeigt, wie Sie Daten aus einer Excel-Arbeitsmappe auslesen. Wählen Sie in der Dropdownliste Table eine Tabelle aus, und klicken Sie auf Sample 5. Der Inhalt der ausgewählten Tabelle wird in einem Fenster angezeigt. Wenn Sie ein ganzes Tabellenblatt ("Sheet1$" oder "Sheet2$") als Tabelle auswählen, wird der Inhalt des in diesem Tabellenblatt verwendeten Bereichs angezeigt. Wie Sie sehen, beginnt der verwendete Bereich nicht unbedingt bei Zeile 1 und Spalte 1 des Tabellenblatts. Der verwendete Bereich beginnt bei der ersten Zelle mit Daten links oben auf dem Tabellenblatt.

    Wenn Sie eine bestimmte Bereichsadresse oder einen festgelegten Bereich auswählen, wird nur der Inhalt dieses Bereichs auf dem Tabellenblatt angezeigt.
So verwenden Sie die Active Server Pages (ASP):
  1. Erstellen Sie einen neuen Ordner mit dem Namen ExcelADO im Basisverzeichnis des Webservers. Beachten Sie, dass der standardmäßige Pfad des Basisverzeichnisses "C:\InetPut\WWWRoot" lautet.
  2. Kopieren Sie die folgenden Dateien in den Ordner, den Sie im vorangegangenen Schritt erstellt haben:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. Die ASP-Skripts in diesem Beispiel erstellen mittels der Copy-Methode des FileSystemObject-Objekts Kopien der Arbeitsmappenvorlagen. Damit die Copy-Methode erfolgreich ausgeführt werden kann, muss der Client, der auf das Skript zugreift, für den Ordner mit den ASP-Dateien Schreibrechte haben.
  4. Gehen Sie mit dem Browser zur Datei "Orders.asp" (also zu "http://IhrServer/ExcelADO/Orders.ASP"). Sie werden feststellen, dass im Browser eine Excel-Arbeitsmappe angezeigt wird, die in etwa der Arbeitsmappe entspricht, die Sie schon in Beispiel 1 der Visual Basic-Anwendung kennen gelernt haben.
  5. Gehen Sie mit dem Browser zur Datei "EmpData.asp" (also zu "http://IhrWebserver/ExcelADO/EmpData.ASP"). Sie werden feststellen, dass im Browser eine Excel-Arbeitsmappe angezeigt wird, die in etwa der Arbeitsmappe entspricht, die Sie schon in Beispiel 2 der Visual Basic-Anwendung kennen gelernt haben.
(c) Microsoft Corporation 2000, Alle Rechte vorbehalten. Beiträge von Lori B. Turner, Microsoft Corporation.

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
195951 Abfragen und Aktualisieren von Excel-Daten mit ADO von ASP
194124 PRB: Excel-Werte, die wie NULL zurückgegeben werden, die DAO-OpenRecordset verwendet
193998 Welche zu lesende und Binäre Daten anzeigen in ASP Verfahrensweise
247412 Methoden zum Übertragen von Daten von Visual Basic zu Excel
257819 SO WIRD'S GEMACHT: Verwenden von ADO mit Excel-Daten von Visual Basic oder VBA

Eigenschaften

Artikel-ID: 278973 - Geändert am: Montag, 19. März 2007 - Version: 6.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Active Server Pages 4.0
Keywords: 
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com