Methoden zum Übertragen von Daten von Visual Basic zu Excel

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 247412 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
247412 Methods for transferring data to Excel from Visual Basic
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

Dieser Artikel beschreibt verschiedene Methoden zum Übertragen von Daten von Ihrer Microsoft Visual Basic-Anwendung zu Microsoft Excel. Außerdem werden in diesem Artikel die jeweiligen Vor- und Nachteile dieser Methoden erläutert, sodass Sie die Lösung wählen können, die für Sie am besten geeignet ist.

Weitere Informationen

Die am häufigsten verwendete Methode zum Übertragen von Daten in eine Excel-Arbeitsmappe ist die Automatisierung. Die Automatisierung gewährt Ihnen die größtmögliche Flexibilität beim Festlegen des Speicherorts von Daten innerhalb Ihrer Arbeitsmappe und eröffnet Ihnen zudem die Möglichkeit, zur Laufzeit die Arbeitsmappe zu formatieren und diverse Einstellungen festzulegen. Mit der Automatisierung können Sie diverse Vorgehensweisen zum Übertragen Ihrer Daten verwenden:
  • Übertragen von Daten Zelle für Zelle
  • Übertragen von Daten von einem Array auf einen Zellbereich
  • Übertragen von Daten von einem ADO-Recordset auf einen Zellbereich mithilfe der Methode CopyFromRecordset
  • Erstellen einer Abfragetabelle (QueryTable) auf einem Excel-Arbeitsblatt, die die Ergebnisse einer Abfrage auf eine ODBC- oder OLEDB-Datenquelle enthält
  • Übertragen der Daten in die Zwischenablage und nachfolgendes Einfügen des Inhalts der Zwischenablage in ein Excel-Arbeitsblatt
Es gibt auch Methoden zum Übertragen von Daten nach Excel, die ohne Automatisierung auskommen. Auch das Ausführen einer serverseitigen Anwendung kann eine gute Vorgehensweise sein, die Hauptlast der Datenverarbeitung von Ihren Clients fern zu halten. Mit den folgenden Methoden können Sie Ihre Daten ohne Automatisierung übertragen:
  • Übertragen von Daten in eine Tabstopp- oder Trennzeichen-getrennte Textdatei, die Excel später in die Zellen auf einem Arbeitsblatt auflösen kann
  • Übertragen von Daten auf ein Arbeitsblatt mithilfe von ADO
  • Übertragen von Daten nach Excel mithilfe von DDE (Dynamic Data Exchange)
In den folgenden Abschnitten werden die einzelnen Lösungen im Detail vorgestellt.

Hinweis: Wenn Sie mit Microsoft Office Excel 2007 arbeiten, können Sie beim Speichern von Arbeitsmappen das neue Excel 2007-Dateiformat für Arbeitsmappen (*.xlsx) verwenden. Gehen Sie hierzu in den folgenden Codebeispielen zu der folgenden Codezeile:
oBook.SaveAs "C:\Book1.xls"
Ersetzen Sie diesen Code durch die folgende Codezeile:
oBook.SaveAs "C:\Book1.xlsx"
Außerdem ist die Datenbank "Nordwind" in Office 2007 nicht standardmäßig enthalten. Sie können die Datenbank "Nordwind" jedoch von Microsoft Office Online herunterladen.

Verwendung der Automatisierung zum Übertragen von Daten Zelle für Zelle

Mithilfe der Automatisierung können Sie Daten Zelle für Zelle auf ein Arbeitsblatt übertragen:
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object

   'Start a new workbook in Excel
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add


   'Add data to cells of the first worksheet in the new workbook
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A1").Value = "Last Name"
   oSheet.Range("B1").Value = "First Name"
   oSheet.Range("A1:B1").Font.Bold = True
   oSheet.Range("A2").Value = "Doe"
   oSheet.Range("B2").Value = "John"

   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit
Das Übertragen von Daten Zelle für Zelle bietet sich an, wenn die Menge der zu übertragenden Daten klein ist. Dabei haben Sie die Flexibilität, die Daten an beliebiger Stelle in der Arbeitsmappe einfügen und die Zellen zur Laufzeit bedingt formatieren zu können. Diese Vorgehensweise ist jedoch nicht zu empfehlen, wenn große Datenmengen in eine Excel-Arbeitsmappe übertragen werden müssen. Jedes Objekt des Typs Bereich, das Sie zur Laufzeit erfassen, führt zu einer Schnittstellenanforderung; diese Art der Datenübertragung kann daher sehr viel Zeit in Anspruch nehmen. Außerdem besteht bei Microsoft Windows 95 und Windows 98 eine Beschränkung von 64 KB für Schnittstellenanforderungen. Wenn Sie diesen Grenzwert von 64 KB für Schnittstellenanforderungen erreichen oder überschreiten, reagiert der Automatisierungsserver (Excel) eventuell nicht mehr, oder es können Fehlermeldungen zu unzureichendem Speicher angezeigt werden. Diese Beschränkung für Windows 95 und Windows 98 wird im folgenden Artikel der Microsoft Knowledge Base beschrieben:
216400 PRB: Prozessübergreifend-COM-Automatisierungsschnittstelle kann Clientanwendung auf Win95/98 hängen
Auch hier ist das Übertragen von Daten Zelle für Zelle nur bei kleinen Datenmengen zu empfehlen. Wenn Sie große Datenmengen nach Excel übertragen müssen, sollten Sie eine der weiter unten beschriebenen Lösungen in Betracht ziehen.

Weitere Codebeispiele für die Automatisierung von Excel finden Sie im folgenden Artikel der Microsoft Knowledge Base:
219151 Kann Microsoft Excel in Visual Basic wie automatisieren

Verwenden der Automatisierung zum Übertragen eines Arrays mit Daten auf einen Bereich in einem Arbeitsblatt

Ein Array mit Daten kann gleichzeitig auf einen Bereich mit mehreren Zellen übertragen werden:
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object

   'Start a new workbook in Excel
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add

   'Create an array with 3 columns and 100 rows
   Dim DataArray(1 To 100, 1 To 3) As Variant
   Dim r As Integer
   For r = 1 To 100
      DataArray(r, 1) = "ORD" & Format(r, "0000")
      DataArray(r, 2) = Rnd() * 1000
      DataArray(r, 3) = DataArray(r, 2) * 0.7
   Next

   'Add headers to the worksheet on row 1
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")

   'Transfer the array to the worksheet starting at cell A2
   oSheet.Range("A2").Resize(100, 3).Value = DataArray
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit
Wenn Sie Ihre Daten unter Verwendung eines Arrays statt Zelle für Zelle übertragen, können Sie bei großen Datenmengen eine erhebliche Leistungsverbesserung erreichen. Betrachten Sie die folgende Zeile aus dem obigen Code, mit der Daten auf 300 Zellen in dem Arbeitsblatt übertragen werden:
   oSheet.Range("A2").Resize(100, 3).Value = DataArray
Diese Zeile repräsentiert zwei Schnittstellenanforderungen: eine für das Objekt Bereich, das von der Methode Range (Bereich) zurückgegeben wird, und eine weitere für das Objekt Bereich, das von der Methode Resize (Größe anpassen) zurückgegeben wird. Im Gegensatz dazu fallen bei einer Übertragung der Daten Zelle für Zelle 300 Schnittstellenanforderungen für Objekte des Typs Bereich an. Wann immer dies möglich ist, sollten Sie die Vorteile einer Datenübertragung in einem einzigen Gesamtpaket nutzen, die insbesondere in einer Reduzierung der Anzahl an Schnittstellenanforderungen liegen.

Verwenden der Automatisierung zum Übertragen eines ADO-Recordsets auf einen Arbeitsblattbereich

In Excel 2000 wurde die Methode CopyFromRecordset eingeführt, die es ermöglicht, ein ADO-Recordset (oder DAO-Recordset) auf einen Arbeitsblattbereich zu übertragen. Der folgende Code veranschaulicht, wie Sie Excel 2000, Excel 2002 oder Office Excel 2003 so automatisieren können, dass der Inhalt der Tabelle "Bestellungen" (Orders) aus der Beispieldatenbank "Nordwind" mithilfe der Methode CopyFromRecordset übertragen wird:
   'Create a Recordset from all the records in the Orders table
   Dim sNWind As String
   Dim conn As New ADODB.Connection
   Dim rs As ADODB.Recordset
   sNWind = _
      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";"
   conn.CursorLocation = adUseClient
   Set rs = conn.Execute("Orders", , adCmdTable)
   
   'Create a new workbook in Excel
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add
   Set oSheet = oBook.Worksheets(1)
   
   'Transfer the data to Excel
   oSheet.Range("A1").CopyFromRecordset rs
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit
   
   'Close the connection
   rs.Close
   conn.Close
Hinweis: Wenn Sie die Office 2007-Version der Datenbank "Nordwind" verwenden, müssen Sie in dem Codebeispiel die folgende Codezeile ersetzen:
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ sNWind & ";"
Ersetzen Sie diese Codezeile durch die folgende Codezeile:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ sNWind & ";"
Excel 97 stellt ebenfalls eine Methode CopyFromRecordset bereit, die aber nur mit einem DAO-Recordset verwendet werden kann. Die Methode CopyFromRecordset in Excel 97 unterstützt kein ADO.

Weitere Informationen zum Verwenden von ADO und der Methode CopyFromRecordset finden Sie im folgenden Artikel der Microsoft Knowledge Base:
246335 Wie Übertragen von Daten auf Excel mit Automatisierung von einem ADO-Recordset

Verwenden der Automatisierung zum Erstellen einer Abfragetabelle auf einem Arbeitsblatt

Ein Objekt des Typs Abfragetabelle (QueryTable) repräsentiert eine Tabelle, die mit Daten aus einer externen Datenquelle erstellt wurde. Im Rahmen der Automatisierung von Microsoft Excel können Sie eine Abfragetabelle erstellen, indem Sie einfach eine Verbindungszeichenfolge für eine Verbindung zu einer OLEDB- oder ODBC-Datenquelle zusammen mit einer SQL-Zeichenfolge eingeben. Excel übernimmt die Erstellung des Recordsets und fügt es dann an der von Ihnen angegebenen Stelle in das Arbeitsblatt ein. Die Verwendung von Abfragetabellen bietet verschiedene Vorteile gegenüber der Methode CopyFromRecordset:
  • Excel übernimmt die Erstellung des Recordsets und dessen Platzierung auf dem Arbeitsblatt.
  • Die Abfrage kann zusammen mit der Abfragetabelle gespeichert werden, um eine spätere Aktualisierung mit einem neuen Recordset zu ermöglichen.
  • Wenn eine neue Abfragetabelle zu Ihrem Arbeitsblatt hinzugefügt wird, können Sie festlegen, dass in den Zellen des Arbeitsblatts vorhandene Daten verschoben werden, um Platz für die neuen Daten zu schaffen. Weitere Details hierzu finden Sie unter der Eigenschaft RefreshStyle (Formatvorlage aktualisieren).
Der folgende Code veranschaulicht, wie Sie Excel 2000, Excel 2002 oder Office Excel 2003 so automatisieren können, dass unter Verwendung von Daten aus der Beispieldatenbank "Nordwind" eine neue Abfragetabelle in einem Excel-Arbeitsblatt erstellt wird:
   'Create a new workbook in Excel
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add
   Set oSheet = oBook.Worksheets(1)
   
   'Create the QueryTable
   Dim sNWind As String
   sNWind = _
      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
   Dim oQryTable As Object
   Set oQryTable = oSheet.QueryTables.Add( _
   "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";", oSheet.Range("A1"), "Select * from Orders")
   oQryTable.RefreshStyle = xlInsertEntireRows
   oQryTable.Refresh False
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit

Verwenden der Zwischenablage

Die Windows-Zwischenablage kann ebenfalls zum Übertragen von Daten auf ein Arbeitsblatt verwendet werden. Sie können eine Zeichenfolge mit durch Tabulatoren getrennten Spalten und durch Zeilenschaltungen getrennten Zeilen kopieren und dann in mehrere Zellen auf einem Arbeitsblatt einfügen. Der folgende Code veranschaulicht, wie Visual Basic sein Zwischenablage-Objekt nutzen kann, um Daten nach Excel zu übertragen:
   'Copy a string to the clipboard
   Dim sData As String
   sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _
           & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _
           & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"
   Clipboard.Clear

   Clipboard.SetText sData
   
   'Create a new workbook in Excel
   Dim oExcel As Object
   Dim oBook As Object
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add
   

   'Paste the data
   oBook.Worksheets(1).Range("A1").Select
   oBook.Worksheets(1).Paste
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit

Erstellen einer Textdatei mit Trennzeichen, die Excel in Zeilen und Spalten auflösen kann

Excel kann Tabstopp- oder Trennzeichen-getrennte Dateien öffnen und die darin enthaltenen Daten korrekt in Zellen einfügen. Sie können dieses Feature nutzen, wenn Sie eine große Datenmenge bei nur wenig oder gar keiner Automatisierung auf ein Arbeitsblatt übertragen möchten. Diese Vorgehensweise ist insbesondere für Client-/Serveranwendungen geeignet, weil die Textdatei auf der Serverseite generiert werden kann. Sie können die erstellte Datei dann auf dem Client öffnen und die Automatisierung je nach Bedarf nutzen.

Der folgende Code veranschaulicht, wie Sie aus einem ADO-Recordset eine Trennzeichen-getrennte Textdatei erstellen können:
   'Create a Recordset from all the records in the Orders table
   Dim sNWind As String
   Dim conn As New ADODB.Connection
   Dim rs As ADODB.Recordset
   Dim sData As String
   sNWind = _
      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";"
   conn.CursorLocation = adUseClient
   Set rs = conn.Execute("Orders", , adCmdTable)
   
   'Save the recordset as a tab-delimited file
   sData = rs.GetString(adClipString, , vbTab, vbCr, vbNullString)
   Open "C:\Test.txt" For Output As #1
   Print #1, sData
   Close #1
    
   'Close the connection
   rs.Close
   conn.Close
   
   'Open the new text file in Excel
   Shell "C:\Program Files\Microsoft Office\Office\Excel.exe " & _
      Chr(34) & "C:\Test.txt" & Chr(34), vbMaximizedFocus
Hinweis: Wenn Sie die Office 2007-Version der Datenbank "Nordwind" verwenden, müssen Sie in dem Codebeispiel die folgende Codezeile ersetzen:
 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";"
Ersetzen Sie diese Codezeile durch die folgende Codezeile:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
      sNWind & ";"
Wenn Ihre Textdatei eine .CSV-Dateinamenerweiterung hat, öffnet Excel die Datei ohne Anzeige des Textimport-Assistenten und nimmt automatisch an, dass die Datei Trennzeichen-getrennt ist. Entsprechend analysiert Excel eine Datei mit einer .TXT-Dateinamenerweiterung automatisch anhand von Tabstopp-Trennzeichen.

Im vorangegangenen Codebeispiel wurde Excel über die Shell-Anweisung gestartet, und der Name der Datei wurde als Befehlszeilenargument verwendet. Im vorangegangenen Beispiel kam keine Automatisierung zum Einsatz. Falls gewünscht, können Sie jedoch einen geringen Grad der Automatisierung einsetzen, um die Textdatei zu öffnen und im Format einer Excel-Arbeitsmappe zu speichern:
   'Create a new instance of Excel
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
   Set oExcel = CreateObject("Excel.Application")
       
   'Open the text file
   Set oBook = oExcel.Workbooks.Open("C:\Test.txt")
   
   'Save as Excel workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls", xlWorkbookNormal
   oExcel.Quit
Weitere Informationen zum Verwenden der Dateieingabe/-ausgabe aus Ihrer Visual Basic-Anwendung finden Sie im folgenden Artikel der Microsoft Knowledge Base:
172267 BEISPIEL: RECEDIT.VBP zeigt Dateieingabe/-ausgabe in Visual Basic

Übertragen von Daten auf ein Arbeitsblatt mithilfe von ADO

Sie können den Microsoft Jet OLE DB-Provider verwenden, um Datensätze zu einer Tabelle in einer vorhandenen Excel-Arbeitsmappe hinzuzufügen. Eine "Tabelle" in Excel ist eigentlich nur ein Bereich mit einem definierten Namen. Die erste Zeile des Bereichs muss die Kopfzeilen (oder Feldnamen) enthalten, und alle folgenden Zeilen enthalten die Datensätze. Die folgenden Schritte zeigen, wie Sie mit einer leeren Tabelle mit dem Namen MyTable eine Arbeitsmappe erstellen können.
Excel 97, Excel 2000 und Excel 2003
  1. Erstellen Sie eine neue Arbeitsmappe in Excel.
  2. Fügen Sie die folgenden Kopfzeilen zu den Zellen A1:B1 von Tabelle1 hinzu:

    A1: FirstName B1: LastName
  3. Formatieren Sie Zelle B1 mit rechtsbündiger Ausrichtung.
  4. Markieren Sie die Zellen A1:B1.
  5. Wählen Sie im Menü Einfügen die Option Namen und dann die Option Definieren. Geben Sie den Namen MyTable ein, und klicken Sie auf OK.
  6. Speichern Sie die neue Arbeitsmappe unter dem Namen "C:\Book1.xls", und beenden Sie Excel.
Sie können einen ähnlichen Code wie den folgenden verwenden, um mithilfe von ADO Datensätze zu MyTable hinzuzufügen:
   'Create a new connection object for Book1.xls
   Dim conn As New ADODB.Connection
   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=C:\Book1.xls;Extended Properties=Excel 8.0;"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Bill', 'Brown')"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Joe', 'Thomas')"
   conn.Close
Excel 2007
  1. Starten Sie eine neue Arbeitsmappe in Excel 2007.
  2. Fügen Sie die folgenden Kopfzeilen zu den Zellen A1:B1 von Tabelle1 hinzu:

    A1: FirstName B1: LastName
  3. Formatieren Sie Zelle B1 mit rechtsbündiger Ausrichtung.
  4. Markieren Sie die Zellen A1:B1.
  5. Klicken Sie auf dem Band auf die Registerkarte Formeln, und klicken Sie dann auf Namen definieren. Geben Sie den Namen MyTable ein, und klicken Sie dann auf OK.
  6. Speichern Sie die neue Arbeitsmappe unter dem Namen "C:\Book1.xlsx", und beenden Sie Excel.
Verwenden Sie einen ähnlichen Code wie in dem folgenden Codebeispiel, um mithilfe von ADO Datensätze zu der Tabelle "MyTable" hinzuzufügen:
   'Create a new connection object for Book1.xls
   Dim conn As New ADODB.Connection
   conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
      "Data Source=C:\Book1.xlsx;Extended Properties=Excel 12.0;"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Scott', 'Brown')"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Jane', 'Dow')"
   conn.Close
Wenn Sie wie hier dargestellt Datensätze zu der Tabelle hinzufügen, wird die Formatierung in der Arbeitsmappe beibehalten. Im vorangegangenen Beispiel werden zur Spalte B hinzugefügte neue Felder mit rechtsbündiger Ausrichtung formatiert. Jeder zu einer Zeile hinzugefügte Datensatz übernimmt die Formatierung der darüber liegenden Zeile.

Beachten Sie, dass ein Datensatz, wenn er zu einer oder mehreren Zellen in dem Arbeitsblatt hinzugefügt wird, alle Daten überschreibt, die zuvor in diesen Zellen enthalten waren. Zeilen in dem Arbeitsblatt werden also nicht "nach unten verschoben", wenn neue Datensätze hinzufügt werden. Sie sollten diese Regel berücksichtigen, wenn Sie das Datenlayout in Ihren Arbeitsmappen planen.

Hinweis: Die Methode zum Aktualisieren von Daten in einem Excel-Arbeitsblatt über ADO oder DAO funktioniert innerhalb von Access in der Visual Basic für Applikationen-Umgebung nicht, nachdem Sie Office 2003 Service Pack 2 (SP2) oder das Update für Access 2002 installiert haben, das im Microsoft Knowledge Base-Artikel 904018 enthalten ist. In der Visual Basic für Applikationen-Umgebung funktioniert die Methode gut aus anderen Office-Anwendungen heraus, z. B. Word, Excel und Outlook. Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
904953 Sie können Daten in Tabellen, die in einer Excel-Arbeitsmappe in Office Access 2003 oder Access 2002 verknüpft werden, nicht ändern, Sie können nicht hinzufügen oder Sie können nicht löschen
904018 Beschreibung des Updates für Access 2002 vom 18.10.2005

Weitere Informationen zum Verwenden von ADO für den Zugriff auf eine Excel-Arbeitsmappe finden Sie im folgenden Artikel der Microsoft Knowledge Base:
195951 Abfragen und Aktualisieren von Excel-Daten mit ADO von ASP

Verwenden von DDE zum Übertragen von Daten nach Excel

DDE ist eine Alternative zur Automatisierung als Methode der Kommunikation mit Excel und der Übertragung von Daten. Mit zunehmender Bedeutung der Automatisierung und von COM ist DDE jedoch nicht länger die bevorzugte Methode der Kommunikation mit anderen Anwendungen und sollte nur verwendet werden, wenn keine andere Lösung zur Verfügung steht.

Sie können folgende Vorgehensweisen wählen, um Daten mithilfe von DDE nach Excel zu übertragen:
  • Verwenden der Methode LinkPoke, um Daten an einen oder mehrere Zellbereiche zu senden,

    -oder-
  • Verwenden der Methode LinkExecute, um Befehle zu senden, die Excel dann ausführt.
Das folgende Codebeispiel veranschaulicht, wie Sie einen DDE-Dialog mit Excel einrichten, um Daten an Zellen auf einem Arbeitsblatt zu senden und Befehle auszuführen. Bei Verwendung dieses Beispiels muss bereits eine Arbeitsmappe mit dem Namen MyBook.xls in einer aktiven Instanz von Excel geöffnet sein, damit ein DDE-Dialog mit dem LinkTopic "Excel|MyBook.xls" erfolgreich eingerichtet werden kann.

Hinweis: Wenn Sie mit Excel 2007 arbeiten, können Sie beim Speichern von Arbeitsmappen das neue Dateiformat für Arbeitsmappen (*.xlsx) verwenden. Aktualisieren Sie den Dateinamen in dem folgenden Codebeispiel.

Hinweis: In diesem Beispiel steht Text1 für ein Steuerelement Text Box (Textfeld) in einem Visual Basic-Formular:
   'Initiate a DDE communication with Excel
   Text1.LinkMode = 0
   Text1.LinkTopic = "Excel|MyBook.xls"
   Text1.LinkItem = "R1C1:R2C3"
   Text1.LinkMode = 1
   
   'Poke the text in Text1 to the R1C1:R2C3 in MyBook.xls
   Text1.Text = "one" & vbTab & "two" & vbTab & "three" & vbCr & _
                "four" & vbTab & "five" & vbTab & "six"
   Text1.LinkPoke
   
   'Execute commands to select cell A1 (same as R1C1) and change the font
   'format
   Text1.LinkExecute "[SELECT(""R1C1"")]"
   Text1.LinkExecute "[FONT.PROPERTIES(""Times New Roman"",""Bold"",10)]"
   
   'Terminate the DDE communication
   Text1.LinkMode = 0
Wenn Sie die Methode LinkPoke mit Excel verwenden, geben Sie den Bereich im Format Zeile-Spalte (R1C1) für das LinkItem an. Wenn Sie Daten an mehrere Zellen senden, können Sie eine Zeichenfolge mit durch Tabulatoren getrennten Spalten und durch Zeilenschaltungen getrennten Zeilen verwenden.

Wenn Sie Excel mithilfe von LinkExecute auffordern, einen Befehl auszuführen, müssen Sie Excel den Befehl in der Excel-Makrosprache (XLM) geben. Die XLM-Dokumentation ist in den Excel-Versionen 97 und höher nicht enthalten. Weitere Informationen dazu, wie Sie die XLM-Dokumentation erhalten können, finden Sie im folgenden Artikel der Microsoft Knowledge Base:
143466 XL97: verfügbare Macro97.exe-Datei auf Online-Dienst
Es wird nicht empfohlen, die DDE-Lösung für die Kommunikation mit Excel zu verwenden. Die Automatisierung bietet größtmögliche Flexibilität und gewährt Ihnen einen umfassenden Zugriff auf die neuen Features von Excel.

Informationsquellen

Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
306022 Übertragen von Daten in eine Excel-Arbeitsmappe mit Visual Basic .NET

Eigenschaften

Artikel-ID: 247412 - Geändert am: Montag, 19. März 2007 - Version: 8.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Visual Basic for Applications 5.0
  • Microsoft Visual Basic for Applications 6.0
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Keywords: 
kbautomation kbdde kbinfo KB247412
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

 

Kontaktieren Sie uns, um weitere Hilfe zu erhalten

Kontaktieren Sie uns, um weitere Hilfe zu erhalten
Wenden Sie sich an den Answer Desk, um professionelle Hilfe zu erhalten.