{"id":55000030,"date":"2001-10-01T00:00:00","date_gmt":"2021-02-10T18:42:58","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=30"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Export_nach_Excel","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/","title":{"rendered":"Export nach Excel"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/692e5bf552ec4df392a30d378b6265b9\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Autor: Manfred Hoffbauer, D&uuml;sseldorf<\/p>\n<p><\/b><\/p>\n<p><b>Eine h&auml;ufige Anforderung an die Datenbank Microsoft Access besteht darin, die gespeicherten Daten auch unter Excel zur Verf&uuml;gung zu stellen. Excel eignet sich hervorragend f&uuml;r Auswertungen und Diagramme, die ad hoc am Bildschirm erstellt werden. Hier kann auch der Anwender ohne Programmierfahrung mit entsprechender Fachkenntnis schnell zu &uuml;berzeugenden Ergebnissen kommen.<\/b><\/p>\n<p><b>Export ganz schnell<\/b><\/p>\n<p>Aber wie gelangen die Daten aus der Datenbank in ein Arbeitsblatt Die einfachste Variante bietet das Office-Symbol von Microsoft Access. Um die Daten einer Tabelle oder Abfrage an Excel zu &uuml;bergeben, gehen Sie wie folgt vor:<\/p>\n<li>Aktivieren Sie das Datenbankfenster.<\/li>\n<li>Markieren Sie die Tabelle oder Abfrage, deren Daten Sie exportieren wollen.<\/li>\n<li>Klicken Sie in der Symbolleiste auf den nach unten zeigenden Pfeil neben dem Symbol Office-Verkn&uuml;pfungen (siehe Bild 1)<\/li>\n<li>W&auml;hlen Sie Analysieren mit MS Excel aus der Liste des Symbols.<\/li>\n<p><IMG height=\"299\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic001.png\" width=\"359\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p>Der weitere Ablauf erfolgt automatisch: Access exportiert die Daten in eine .xls-Datei und &ouml;ffnet diese mit der Version von Microsoft Excel, die auf Ihrem PC als Standard f&uuml;r .xls-Dateien definiert ist.<\/p>\n<h3>Vor- und Nachteile des Office-Symbols<\/h3>\n<p>Der Vorteil dieser Vorgehensweise liegt auf der Hand: Die gesamte Abwicklung mit Excel &uuml;bernimmt Access selbst&auml;ndig. Es ist also wirklich keine Programmierung erforderlich. Die Programmfunktion zum Exportieren nach Excel steht sofort nach der Installation von Microsoft Access zur Verf&uuml;gung.<\/p>\n<p><IMG height=\"238\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic002.png\" width=\"359\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><IMG height=\"195\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic003.png\" width=\"359\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  So sehen die Artikeldaten im Excel-Arbeitsblatt aus. <\/span><\/b><\/p>\n<p><IMG height=\"375\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p>F&uuml;r das Erstellen der Abbildungen wurde die Artikeltabelle der Nordwind-Datenbank nach Excel 2000 exportiert. Hier f&auml;llt ein weiterer Vorteil des Office-Symbols auf: Das entstehende Arbeitsblatt erh&auml;lt automatisch auch einige Formatierungen, die beispielsweise die &uuml;berschriftenzeile besonders hervorheben (siehe Bild 2).<\/p>\n<p>Ein weiterer Vorteil des Office-Symbols f&uuml;hrt gleichzeitig zu einem triftigen Nachteil: Access h&auml;lt sich beim Excel-Export an die Programmfunktion von Excel 5.0 als kleinsten gemeinsamen Nenner. Das ist vermutlich der Grund daf&uuml;r, dass generell nur Texte mit einer L&auml;nge von bis zu 255 Zeichen exportiert werden k&ouml;nnen. Insbesondere beim Export von Memofeldern tritt das Problem auf, das Excel dar&uuml;ber hinausgehende Texte einfach abschneidet.<\/p>\n<p>Bestimmte Formatierungen von Zahlenwerten (z.B. W&auml;hrungssymbole), Hyperlinks und Zeilenumbr&uuml;chen in Textfeldern gehen ebenfalls beim Export verloren oder werden fehlerhaft umgewandelt. So wandelt Excel einige Zahlen in Texte um und das f&uuml;hrt dazu, dass Excel mit diesen Werten nicht rechnen kann.<\/p>\n<p>Die genannten Probleme lassen sich allesamt l&ouml;sen, erfordern jedoch ein wenig Programmieraufwand. Die folgenden Abschnitte beschreiben die erforderlichen L&ouml;sungsans&auml;tze.<\/p>\n<p><b>Export automatisch<\/b><\/p>\n<p>Wie bei Access nicht anders zu erwarten, k&ouml;nnen Sie die Programmfunktion zum Export nach Excel auch in VBA benutzen. Um dies an einem einfachen Beispiel nachvollziehen zu k&ouml;nnen, &ouml;ffnen Sie die Nordwind-Datenbank oder die Beispieldatenbank ExportToExcel.mdb.<\/p>\n<h3>Abfrage entwerfen<\/h3>\n<p>Mit einer Abfrage stellen Sie die zu exportierenden Daten zusammen. Sie k&ouml;nnen entweder eine eigene Abfrage entwerfen oder die Abfrage qryBestellungenUndKunden aus der Beispieldatenbank zu diesem Beitrag verwenden (siehe Bild 3).<\/p>\n<p>F&uuml;gen Sie der Abfrage alle Felder hinzu, die Sie exportieren m&ouml;chten. Definieren Sie auch die Kriterien, mit denen Sie die zum Export vorgesehenen Datens&auml;tze selektieren. Um das VBA-Programm f&uuml;r den Export zu entwerfen, gehen Sie wie folgt vor:<\/p>\n<p><IMG height=\"269\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic005.png\" width=\"359\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<li>&ouml;ffnen Sie die Entwurfsansicht eines beliebigen Formulars.<\/li>\n<li>Legen Sie auf dem Formular eine neue Befehlsschaltfl&auml;che an.<\/li>\n<li>&ouml;ffnen Sie das Eigenschaftenfenster f&uuml;r die Schaltfl&auml;che.<\/li>\n<li>Klicken Sie auf das Editor-Symbol der Eigenschaft  Bild.<\/li>\n<li>W&auml;hlen Sie aus der sich &ouml;ffnenden &uuml;bersicht der Symbole den Eintrag Ausgabe an MS Excel.<\/li>\n<p>Als Ergebnis dieser Schritte erhalten Sie eine Befehlsschaltfl&auml;che (siehe Bild 4). Das Bild der Schaltfl&auml;che gleicht dem des Office-Symbols f&uuml;r den Export nach Excel. Um die Schaltfl&auml;che zu programmieren, gehen Sie wie folgt vor:<\/p>\n<li>Klicken Sie die Schaltfl&auml;che mit der rechten Maustaste an, und w&auml;hlen Sie Ereignis aus dem Kontextmen&uuml;.<\/li>\n<li>W&auml;hlen Sie den Eintrag Code-Generator aus der Liste der Generatoren.<\/li>\n<li>Geben Sie die beiden folgenden Programmzeilen ein:<\/li>\n<pre>DoCmd.OpenQuery _    \"qryBestellungenUndKunden\"\r\nDoCmd.RunCommand acCmdOutputToExcel<\/pre>\n<p>Mit den genannten Schritten haben Sie die Ereignisprozedur f&uuml;r das BeimKlicken-Ereignis der Schaltfl&auml;che vollst&auml;ndig definiert. In der Formularansicht k&ouml;nnen Sie das Ergebnis Ihrer Arbeit &uuml;berpr&uuml;fen und die Schaltfl&auml;che anklicken (siehe Bild 5). Access &ouml;ffnet daraufhin das Datenblatt der Abfrage qryBestellungenUndKunden und exportiert die Daten nach Excel. Der Export hat die gleichen Vor- und Nachteile wie die Verwendung des Office-Symbols.<\/p>\n<p><IMG height=\"226\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic006.png\" width=\"359\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><IMG height=\"187\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic007.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b>Export in eine Datei<\/b><\/p>\n<p>Die beiden bisher beschriebenen Methoden f&uuml;hren zu dem gleichen Ergebnis: Access exportiert die Daten in eine Excel-Datei und &ouml;ffnet diese mit Excel. Die entstehende Datei enth&auml;lt auch einige Formatierungen, die automatisch &uuml;bertragen werden.<\/p>\n<p>Das Generieren der Formatierungen ist zwar komfortabel, ben&ouml;tigt aber Zeit. Wenn Sie gro&szlig;e Datenmengen an Excel weitergeben wollen, dann sollten Sie stattdessen die TransferText- oder die TransferSpreadSheet-Methode verwenden. Beide Methoden stehen als VBA-Befehl und als Makroaktion zur Verf&uuml;gung.<\/p>\n<h3>Export als .csv-Datei<\/h3>\n<p>Mit der TransferText-Methode k&ouml;nnen Sie die Daten beispielsweise in eine .csv-Datei exportieren. .csv-Dateien enthalten f&uuml;r jeden Datensatz eine eigene Textzeile.<\/p>\n<p>Die Felder des Datensatzes sind durch Semikola getrennt. Textfelder sind durch doppelte Anf&uuml;hrungszeichen eingeklammert.<\/p>\n<p>Der folgende Befehl exportiert die Daten der Abfrage qryBestellungenUndKunden in die Textdatei Bestellungen.csv:<\/p>\n<pre>DoCmd.TransferText acExportDelim, \"\", _    \"qryBestellungenUndKunden\", _    \"C:\\bestellungen.txt\", True, \"\"<\/pre>\n<p>Der Vorteil von .csv-Dateien besteht darin, dass Sie aus reinem Text bestehen. Sie k&ouml;nnen Sie also auch mit einem Editor wie Notepad &ouml;ffnen und ansehen (siehe Bild 6).<\/p>\n<h3>Export als XLS-Datei<\/h3>\n<p>F&uuml;r den Export in eine Datei mit dem Format von Excel-Dateien h&auml;lt Access einen eigenen Befehl bereit. Die folgende VBA-Anweisung exportiert die Daten der Abfrage qryBestellungenUndKunden in die .xls-Datei Bestellungen.xls:<\/p>\n<pre>DoCmd.TransferSpreadsheet acExport, _    8, \"qryBestellungenUndKunden\", _    \"C:\\Bestellungen.xls\", True, \"\"<\/pre>\n<p>Der Vorteil dieser Methode besteht darin, dass Sie die .xls-Datei ohne Konvertierung direkt mit Excel &ouml;ffnen k&ouml;nnen. Mit dem zweiten Parameter, der im Beispiel den Wert 8 hat, geben Sie &uuml;brigens die Excel-Version an, deren Dateiformat der Export verwenden soll. Die 8 steht f&uuml;r acSpreadsheetTypeExcel8, was dem Dateiformat von Excel 2000 entspricht.<\/p>\n<h3>Vor- und Nachteile von .csv- und.xls-Dateien<\/h3>\n<p>.csv- und .xls-Dateien sind aufgrund der guten Performance beim Erzeugen der Dateien insbesondere f&uuml;r den Austausch gro&szlig;er Datenmengen sehr gut geeignet. Da .csv-Dateien wirklich nur die reinen Daten (zwar als Text- und nicht als Bin&auml;rdaten) enthalten, ben&ouml;tigen sie au&szlig;erdem vergleichsweise wenig Speicherplatz.<\/p>\n<p>Der gr&ouml;&szlig;te Nachteil besteht darin, dass Sie keine Formatierungen an Excel &uuml;bergeben k&ouml;nnen. So lassen sich beispielsweise Zahlenwerte nicht ohne weiteres auch direkt mit dem W&auml;hrungssymbol in Excel formatieren. Die T&auml;tigkeit des Formatierens muss der Anwender nach jedem Datenexport selbst vornehmen.<\/p>\n<p><b>Export mit Automatisierung<\/b><\/p>\n<p>Die optisch ansprechendste und gleichzeitig langsamste Methode zum Export von Daten nach Excel ist die Verwendung der Automatisierung (ehemals: OLE-Automation). Mit dieser Methode k&ouml;nnen Sie die Daten einer Tabelle oder Abfrage sozusagen zellenweise in ein Excel-Arbeitsblatt &uuml;bertragen.<\/p>\n<p>Da Sie bei der Automatisierung auf alle Excel-Methoden und -Eigenschaften zugreifen k&ouml;nnen, stehen Ihnen bei der Formatierung des Arbeitsblatts alle M&ouml;glichkeiten von Excel zur Verf&uuml;gung. Aber auch der Nachteil dieser Methode soll an dieser Stelle nicht verschwiegen werden:<\/p>\n<p>Um alle M&ouml;glichkeiten aussch&ouml;pfen zu k&ouml;nnen, m&uuml;ssen Sie praktisch jeden einzelnen Schritt mit VBA programmieren. Der Preis f&uuml;r die Vielfalt an M&ouml;glichkeiten besteht also in einem vergleichsweise hohen Programmieraufwand. Au&szlig;erdem ist die OLE-Automation die langsamste Methode zur &uuml;bertragung von Daten nach Excel.<\/p>\n<h3>Anlegen einer Befehlsschaltfl&auml;che<\/h3>\n<p>Als Grundlage f&uuml;r den Datenexport dient die Abfrage qryBestellungenUndKunden aus der Beispieldatenbank zu diesem Beitrag. Die Datenbank enth&auml;lt das Formular frmBestellungenFiltern, mit dem sich Bestellungen filtern und als Liste anzeigen lassen. Das Formular enth&auml;lt die Schaltfl&auml;che btnExportToExcel mit der Bitmap MS Excel als Symbol. Bei einem Klick auf die Schaltfl&auml;che f&uuml;hrt Access die Prozedur aus Quellcode 1 aus.<\/p>\n<p>Die Ereignisprozedur fragt mit Me.Filter den Filter des aktuellen Formulars ab und speichert ihn in der String-Variablen sFilter. Die folgende If-Anweisung pr&uuml;ft, ob &uuml;berhaupt ein Filter definiert ist. Falls nein, fragt die MsgBox-Funktion, ob der Anwender alle Datens&auml;tze an Excel &uuml;bergeben m&ouml;chte. Wenn der Anwender diese Frage mit einem Klick auf die Schaltfl&auml;che Nein beantwortet, beendet die Exit Sub-Anweisung die Prozedur. Andernfalls speichert Access die folgende SQL-Anweisung als Datenquelle f&uuml;r den Datenexport:<\/p>\n<pre>SELECT * FROM qryBestellungenUndKunden<\/pre>\n<p>Wenn das Formular einen Filter hat, soll dieser auch f&uuml;r den Datenexport verwendet werden. In diesem Fall f&uuml;gt Access den gesamten Ausdruck einfach als Where-Klausel an die Select-Anweisung an. Wenn der Anwender die Bestellungen beispielsweise nach Alfreds Futterkiste gefiltert hat, f&uuml;hrt der Ausdruck<\/p>\n<pre>sSQL = \"SELECT * FROM qryBestellungenUndKunden WHERE \" & sFilter<\/pre>\n<p>zu folgendender Select-Anweisung:<\/p>\n<pre>SELECT * FROM qryBestellungenUndKunden WHERE [Kunden-Code] = \"ANTON\"\r\nPrivate Sub btnExportToExcel_Click()\r\n    Dim sFilter As String\r\n    Dim sSQL As String\r\n    sFilter = Me.Filter\r\n    If Len(Nz(sFilter)) = 0 Then\r\n        If MsgBox(\"Wollen Sie alle Datens&auml;tze exportieren\", vbYesNo, _            \"Kein Filter definiert.\") = vbNo Then\r\n            Exit Sub\r\n        Else\r\n            '' Datenquelle f&uuml;r alle Datens&auml;tze definieren\r\n            sSQL = \"SELECT * FROM qryBestellungenUndKunden\"\r\n        End If\r\n    Else\r\n        '' Datenquelle mit Filter definieren\r\n        sSQL = \"SELECT * FROM qryBestellungenUndKunden WHERE \" & sFilter\r\n    End If<\/pre>\n<p><!--30percent--><\/p>\n<p>Ob nun mit oder ohne Filter: Die Ereignisprozedur speichert die SQL-Anweisung in der String-Variablen sSQL. F&uuml;r den weiteren Ablauf ist aber eine Abfrage als Datenquelle f&uuml;r den Export erforderlich.<\/p>\n<p>Aus diesem Grund weisen die folgenden Anweisungen die SELECT-Anweisung der SQL-Eigenschaft eines QueryDefs-Objekts zu. Da das QueryDefs-Objekt nicht jedes Mal neu generiert wird, muss es vor Aufruf der Prozedur bereits in der aktuellen Datenbank enthalten sein. Dabei gen&uuml;gt es allerdings, irgendeine Auswahlabfrage als Rahmen unter dem Namen qryExportToExcel zu speichern.<\/p>\n<pre>Dim dbs As Database\r\nSet dbs = CurrentDb\r\ndbs.QueryDefs(\"qryExportToExcel\").SQL _    = sSQL\r\ndbs.QueryDefs(\"qryExportToExcel\").Close\r\nExportQueryToExcel<\/pre>\n<p>Den Abschluss der Ereignisprozedur bildet der Aufruf der Prozedur ExportQueryToExcel. Diese Prozedur ist im Modul modExcelTransfer der Beispieldatenbank enthalten und f&uuml;hrt den Export der Daten nach Excel durch.<\/p>\n<p>Die erste Aufgabe der Prozedur ExportQueryToExcel besteht darin, einen Namen f&uuml;r die neue Excel-Datei zu ermitteln. Dies geschieht durch einen Aufruf der Funktion ExcelDateiNameErmitteln( ), die einen Dateinamen inklusive Pfad als Funktionsparameter zur&uuml;ckgibt. Aber nach welchen Regeln wird der neue Name gebildet Die Funktion ermittelt zun&auml;chst mit GetDBPath( ) den Pfad des aktuellen Projektes. Der Pfad wird um den Dateinamen erg&auml;nzt, der sich aus dem Text Bestellungen, dem aktuellen Tagesdatum im Format JJJJMMTT, einer dreistelligen fortlaufenden Nummer und der Erweiterung .xls zusammensetzt.. Das Listing aus Quellcode 2 zeigt die Funktion im Detail.<\/p>\n<pre>Public Function ExcelDateiNameErmitteln() As String\r\n    Dim sDateiname As String\r\n    sDateiname = GetDBPath() & \"\\Bestellungen\" & Format(Date, \"yyyymmdd\")\r\n    Dim sTestname As String\r\n    Dim i As Integer\r\n    i = 0\r\n    Dim lDateiVorhanden As Boolean\r\n    lDateiVorhanden = True\r\n    '' Ende, wenn bereits 1.000 Dateien an diesen angelegt wurden.\r\n    While lDateiVorhanden And i &lt;= 999\r\n        sTestname = sDateiname & Format(i, \"000\") & \".xls\"\r\n        If Not FileExists(sTestname) Then\r\n            lDateiVorhanden = False\r\n            sDateiname = sTestname\r\n        End If\r\n        i = i + 1\r\n    Wend\r\n    If Not lDateiVorhanden Then\r\n        ExcelDateiNameErmitteln = sDateiname\r\n    End If\r\nEnd Function\r\nQuellcode 2<\/pre>\n<p>Damit keine Datei unbeabsichtigt &uuml;berschrieben wird, &uuml;berpr&uuml;ft die Funktion auch die vorhandenen Dateien. Wenn sich die Beispieldatenbank im Verzeichnis C:\\ExportToExcel befindet, liefert die Funktion beim ersten Aufruf den Dateinamen<\/p>\n<pre>C:\\ExportToExcel\\Bestellungen20010706000.xls<\/pre>\n<p>und wenn diese Datei bereits angelegt ist, den folgenden Dateinamen:<\/p>\n<pre>C:\\ExportToExcel\\Bestellungen20010706001.xls<\/pre>\n<p>Da die Vergabe der fortlaufenden Nummer auf drei Stellen begrenzt ist, lautet der h&ouml;chste Dateiname:<\/p>\n<pre>C:\\ExportToExcel\\Bestellungen20010706999.xls<\/pre>\n<p>Dieser Wert wird erst &uuml;berschritten, wenn mehr als 999 Dateien an einem Tag angelegt werden. Falls Sie an diese Grenze sto&szlig;en sollten, k&ouml;nnen Sie die Anzahl der Stellen in der Format-Funktion und in der While-Anweisung erh&ouml;hen.<\/p>\n<p>Der Aufruf der Funktion ExcelDateiNameErmitteln erfolgt aus der Prozedur ExportToExcel heraus mit den Anweisungen aus Quellcode 3.<\/p>\n<p>F&uuml;r den Fall, dass die Funktion keinen g&uuml;ltigen Dateinamen ermitteln kann, bricht Access die Ausf&uuml;hrung der Prozedur ExportToExcel mit Exit Sub ab.<\/p>\n<pre>strExcelDatei = ExcelDateiNameErmitteln()\r\nIf Len(strExcelDatei) = 0 Then\r\n    MsgBox \"Es konnte kein Dateiname f&uuml;r die Excel-Datei ermittelt werden. Bitte \" _    & \"l&ouml;schen Sie nicht mehr ben&ouml;tigte Dateien aus dem Verzeichnis.\", vbCritical, _    sAppname\r\n    Exit Sub\r\nEnd If\r\nDim ExcelSheet As Object\r\n''&uuml;berpr&uuml;fen, ob Excel gestartet werden muss.\r\nIf IstExcelGestartet() Then\r\n    Set ExcelSheet = GetObject(, \"Excel.Application\")    '' Excel war schon gestartet\r\nElse\r\n    Set ExcelSheet = CreateObject(\"Excel.Application\")   '' Excel starten\r\nEnd If\r\n'' Anstehende Ereignisse des Betriebssystems verarbeiten lassen.\r\nDoEvents\r\n'' &uuml;berpr&uuml;fen, ob das Excel-Objekt erfolgreich instanziert wurde.\r\nIf ExcelSheet Is Nothing Then\r\n    MsgBox \"Das Excel-Objekt konnte nicht erstellt werden.\", vbCritical, sAppname\r\n    Exit Sub\r\nEnd If<\/pre>\n<p>Um auf die Eigenschaften und Methoden von Excel zugreifen zu k&ouml;nnen, m&uuml;ssen Sie zuerst ein Objekt definieren und ihm eine Excel-Instanz zuweisen. Der VBA-Code aus Quellcode 4 f&uuml;hrt diese Aufgabe durch.<\/p>\n<p>In der If-Anweisung wird die Funktion IstExcelGestartet( ) aufgerufen. Falls diese Funktion den Wert True liefert, erh&auml;lt das Objekt ExcelSheet einen Verweis auf die laufenden Excel-Applikation. Andernfalls erzeugt die CreateObject( )-Funktion ein neues Excel-Objekt und liefert gleichzeitig den Verweis darauf als Funktionswert zur&uuml;ck.<\/p>\n<p>In jedem Fall kann nach der Ausf&uuml;hrung einer der beiden Funktionen davon ausgegangen werden, dass die Objekt-Variable ExcelSheet auf eine laufende Excel-Applikation verweist. Zur Sicherheit wird mit den Anweisungen aus Quellcode 5 noch einmal &uuml;berpr&uuml;ft, ob der Vorgang auch wirklich erfolgreich abgeschlossen werden konnte.<\/p>\n<p>Falls das Excel-Objekt nicht erzeugt werden konnte, trifft die Bedingung Is Nothing zu. Dieser Fall kann beispielsweise dann eintreten, wenn Excel auf dem PC nicht installiert ist.<\/p>\n<p><b>&uuml;berpr&uuml;fen, ob Excel gestartet ist<\/b><\/p>\n<p>Aber wie kann die Funktion IstExcelGestartet &uuml;berhaupt feststellen, ob Excel gestartet ist Die Pr&uuml;fung erfolgt  &#8211; wie der Programmcode aus Quellcode 6 zeigt &#8211; durch den Aufruf der GetObject-Funktion in Kombination mit einer On Error Resume Next-Anweisung.<\/p>\n<p>Mit der Set-Anweisung wird der Objektvariablen obj eine Referenz auf eine Excel-Applikation zugewiesen. Falls Excel zu diesem Zeitpunkt nicht gestartet sein sollte, dann f&uuml;hrt die Set-Anweisung zu einem Fehler und in der Folge auch zum Programmabbruch.<\/p>\n<pre>Public Function IstExcelGestartet() As Boolean\r\n    '' Stellt fest, ob Excel gerade geladen ist\r\n    Dim obj As Object\r\n    On Error Resume Next\r\n    '' Pr&uuml;fen, ob Excel-Objekt instanziert werden kann.\r\n    Set obj = GetObject(, \"Excel.Application\")\r\n    IstExcelGestartet = (Err.Number = 0)\r\n    Set obj = Nothing\r\nEnd Function\r\n'' Excel mit Hilfe des Application-Objekts bereitstellen\r\nExcelSheet.Application.Visible = True\r\nConst xlMinimized = -4140\r\nConst xlNormal = -4143\r\nIf ExcelSheet.WindowState = xlMinimized Then\r\n    ExcelSheet.WindowState = xlNormal\r\nEnd If\r\n'' Neues Workbook hinzuf&uuml;gen\r\nExcelSheet.workbooks.Add\r\n'' Das Excel-Sheet speichern\r\nExcelSheet.ActiveWorkbook.SaveAs Filename:=strExcelDatei\r\nIf ExcelSheet.workbooks.Count = 0 Then\r\n    MsgBox \"Momentan ist keine Excel-Mappe ge&ouml;ffnet.\", _        vbCritical, sAppname\r\n    Exit Sub\r\nEnd If<\/pre>\n<p>Die On Error Resume Next-Anweisung verhindert jedoch den Programmabbruch und f&uuml;hrt dazu, dass die auf Set folgende Anweisung in jedem Falls ausgef&uuml;hrt wird. Diese Anweisung ermittelt nun anhand der aktuellen Fehlernummer, ob das Excel-Objekt erfolgreich zugewiesen werden konnte. Falls kein Fehler aufgetreten ist, ist Excel bereits gestartet und die Funktion liefert den Wert True zur&uuml;ck.<\/p>\n<p><b>Eine Excel-Arbeits-mappe &ouml;ffnen<\/b><\/p>\n<p>Die Objektvariable ExcelSheet enth&auml;lt eine Referenz auf die laufende Excel-Applikation. Mit ihr k&ouml;nnen Sie nun auf alle Eigenschaften und Methoden von Excel zugreifen. Bei der Programmierung verwenden Sie prinzipiell die gleiche Punktnotation wie in Access. Die Anweisungen aus Quellcode 7 machen die Excel-Applikation sichtbar und bringen das Fenster auf Normalgr&ouml;&szlig;e.<\/p>\n<p>Da das Excel-Fenster von Windows in den Vordergrund gestellt wird, k&ouml;nnen Sie bei einem Test der Prozedur den weiteren Ablauf direkt am Bildschirm verfolgen und beobachten, wie die folgenden Anweisungen (s. Quellcode 8) ein neues Excel-Arbeitsblatt anlegen und es auf der Festplatte speichern. Als Dateiname wird hier der von der Funktion ExcelDateiNameErmitteln ermittelte Name verwendet.<\/p>\n<p>Die If-Anweisung &uuml;berpr&uuml;ft den Erfolg der Aktion. Falls Excel das Arbeitsblatt nicht anlegen konnte, liefert die Count-Eigenschaft des Workbook-Objekts den Wert 0. Access zeigt dann eine Fehlermeldung auf dem Bildschirm an und beendet die Prozedur ExportQueryToExcel.<\/p>\n<p>Nachdem nun alle Vorbereitungen abgeschlossen sind, kann die Daten&uuml;bertragung endlich beginnen. Die erste Aufgabenstellung ist die &uuml;bertragung der Feldnamen in die erste Zeile des Excel-Arbeitsblatts. Die Feldnamen dienen als &uuml;berschriften und werden sp&auml;ter auch als solche formatiert.<\/p>\n<pre>    Set dbs = CurrentDb()\r\n    Set rDaten = dbs.OpenRecordset(\"qryExportToExcel\")\r\n    rDaten.MoveFirst\r\n    '' Feldnamen in Kopfzeile schreiben\r\n    Dim iSpalte As Integer\r\n    Dim iZeile As Integer\r\n    iZeile = 1\r\n    For iSpalte = 0 To dbs.QueryDefs(\"qryExportToExcel\").Fields.Count - 1\r\n        vCellValue = dbs.QueryDefs(\"qryExportToExcel\").Fields(iSpalte).Name\r\n        ExcelSheet.ActiveSheet.Cells(iZeile, iSpalte + 1).Value = vCellValue\r\n    Next iSpalte\r\n'' Daten &uuml;bertragen\r\niZeile = 2\r\nWhile Not rDaten.EOF\r\n    For iSpalte = 0 To dbs.QueryDefs(\"qryExportToExcel\").Fields.Count - 1\r\n        If rDaten.Fields(iSpalte).Name = \"Homepage\" Or rDaten.Fields(iSpalte).Name = _            \"E-Mail\" Then\r\n            '' Adresse des Hyperlink-Feldes ermitteln\r\n            vCellValue = HyperlinkPart(Nz(rDaten.Fields(iSpalte)), acAddress)\r\n            '' Hyperlink in Excel einf&uuml;gen\r\n            ExcelSheet.ActiveSheet.Hyperlinks.Add Anchor:=ExcelSheet. _\r\n                ActiveSheet.Cells(iZeile, iSpalte + 1), Address:=vCellValue\r\n        Else\r\n            '' ASCII 13,10 durch ASCII 10 ersetzen\r\n            vCellValue = Replace(Nz(rDaten.Fields(iSpalte).Value), vbCrLf, vbLf)\r\n            ExcelSheet.ActiveSheet.Cells(iZeile, iSpalte + 1).Value = vCellValue\r\n        End If\r\n    Next iSpalte\r\n    iZeile = iZeile + 1\r\n    rDaten.MoveNext\r\nWend   '' Daten &uuml;bertragen<\/pre>\n<p>Der Zugriff auf die zuvor definierte Abfrage qryExportToExcel erfolgt &uuml;ber das DAO-Recordset rDaten. Die Anweisung rDaten.MoveFirst positioniert den Datensatzzeiger auf den ersten Datensatz des Recordsets (s. Quellcode 9).<\/p>\n<p>Mit der Fields-Auflistung des QueryDefs-Objekts greifen Sie direkt auf die Feldnamen der Abfrage zu. Die For Next-Schleife (s. Quellcode 10) durchl&auml;uft die gesamte Auflistung, liefert also die Ordinalnummern aller Felder beginnend bei 0.<\/p>\n<p>Der mit Fields(iSpalte).Name ermittelte Name einer Spalte wird zun&auml;chst in der Variablen vCellValue zwischengespeichert (s. Quellcode 11). In der darauffolgenden Anweisung gibt<\/p>\n<pre>Sheet.ActiveSheet.Cells(iZeile, iSpalte + 1).Value<\/pre>\n<p>zun&auml;chst die durch Zeilennummer und Spaltennummer identifizierte Zelle des Excel-Arbeitsblatts an (siehe Bild 7). Hier ist darauf zu achten, dass die Nummerierung bei Excel mit 1 beginnt. Die in iSpalte hinterlegte Spaltennummer darf deshalb nur mit dem Offset 1 verwendet werden.<\/p>\n<p><IMG height=\"182\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic008.png\" width=\"359\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p>Auf die &uuml;bertragung der Feldnamen erfolgt die &uuml;bertragung der einzelnen Datens&auml;tze. Da das Recordset rDaten weiter oben schon mit MoveFirst auf den ersten Datensatz positioniert wurde, kann es direkt mit einer While-Schleife losgehen. Access durchl&auml;uft den Schleifenrumpf f&uuml;r jeden Datensatz der Abfrage qryExportToExcel einmal.<\/p>\n<p>Innerhalb der Leseschleife durchl&auml;uft eine zweite Schleife alle Felder des Datensatzes. Diese zweite Schleife ist wegen der Besonderheiten der Felder E-Mail und Hyperlink erforderlich.<\/p>\n<p><b>Besonderheiten f&uuml;r E-Mail- und Hyperlink-Felder<\/b><\/p>\n<p>In der Beispieldatenbank haben die Felder E-Mail und Hyperlink den Datentyp Hyperlink. Durch das einfache Zuweisen der Feldwerte in ein Excel-Arbeitsblatt werden zwar die Web- und E-Mail-Adressen &uuml;bertragen, aber leider nur als Text. <\/p>\n<p>Als besonderen Komfort k&ouml;nnen Sie Excel aber veranlassen, die &uuml;bertragenen Texte auch direkt als Hyperlinks zu interpretieren. Das hat den Vorteil, dass der Excel-Anwender die Hyperlinks nur anzuklicken braucht, um eine Web-Seite mit dem Standardbrowser zu &ouml;ffnen oder um eine Mail mit dem Standard-Mailprogramm zu versenden.<\/p>\n<p>Damit das Ganze funktioniert, wird auf der Access-Seite mit<\/p>\n<pre>vCellValue = HyperlinkPart(Nz(rDaten. _    Fields(iSpalte)), acAddress)<\/pre>\n<p>die eigentliche Adresse aus dem Hyperlink-Feld extrahiert und in der Variablen vCellValue gespeichert. Bei der Zuweisung des Werts an eine Excel-Zelle kommt eine weitere Funktion zum Einsatz, die aber diesmal aus dem Sprachvorrat von Excel stammt. Mit Hyperlink.Add f&uuml;gen Sie in Excel ein neues Hyperlink-Feld hinzu. Mit Anchor spezifizieren Sie die Zelle f&uuml;r den Hyperlink und mit Adresse die eigentliche Web- oder Mail-Adresse.<\/p>\n<pre>ExcelSheet.ActiveSheet.Hyperlinks.Add _    Anchor:=ExcelSheet.ActiveSheet. _    Cells(iZeile, iSpalte + 1), _    Address:=vCellValue<\/pre>\n<p>Diese Anweisung f&uuml;gt den Wert von vCellValue im Excel-Arbeitsblatt als Hyperlink ein. Wenn der Anwender den Hyperlink sp&auml;ter anklickt, startet Excel die Standardanwendung (in der Regel Internet Explorer oder Microsoft Outlook) f&uuml;r den Hyperlink (siehe Bild 8).<\/p>\n<p><IMG height=\"217\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic009.png\" width=\"359\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><IMG height=\"218\" src=\"..\/fileadmin\/_temp_\/{645124FA-5868-4ABF-AB89-D65E11FCA858}\/pic010.png\" width=\"360\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>In der Tabelle Kunden der Beispieldatenbank sind sowohl Hyperlink als auch E-Mail als Hyperlink-Felder definiert. Die unterschiedliche Bedeutung der beiden Felder ergibt sich erst aus der Dateneingabe. Wenn Sie beispielsweise den Text http:\/\/www.fullaccess.de eingeben, interpretiert Access das Feld als Web-Adresse und startet beim einem Klick auf den Hyperlink den Web-Browser. Falls Sie hingegen mailto:ihrkontakt@fullaccess.de eingeben, startet Access den E-Mail-Client und &ouml;ffnet ein Mailfenster mit ihrkontakt@fullaccess.de als Empf&auml;ngeradresse. <\/p>\n<p><b>Mehrzeilige Texte<\/b><\/p>\n<p>Die Tabelle Kunden der Beispieldatenbank wurde aus der im Lieferumfang von Access enthaltenen Nordwind-Datenbank entnommen und ist auch in der Abfrage qryExportToExcel enthalten. Deshalb wirkt sich eine Besonderheit dieser Tabelle auch auf den Excel-Export aus: Im Feld Stra&szlig;e einiger Datens&auml;tze befinden sich mehrzeilige Eingaben. Bei Access dient die Tastenkombination Strg + Enter zur Eingabe von erzwungenen Zeilenvorsch&uuml;ben.<\/p>\n<p>Eine n&auml;here Untersuchung einer solchen Texteingabe zeigt, dass Access an der Stelle des Zeilenvorschubs eine Folge der ASCII-Zeichen 13 und 10 (also: carriage return und line feed) speichert.<\/p>\n<p>Falls Sie einen solchen Text per Automation einer Excel-Zelle zuweisen, kann Excel den Zeilenvorschub leider nicht als solchen interpretieren. Bei Excel geben Sie Zeilenvorsch&uuml;be n&auml;mlich mit der Tastenkombination Alt + Enter ein. Excel speichert an dieser Stelle dann das ASCII-Zeichen 10 (line feed). Aus diesem Grund sind die folgenden beiden Zeilen erforderlich:<\/p>\n<pre>Public Function ToEnglish(V As Variant) As String\r\n    ToEnglish = Replace(Format(V, \"General Number\"), \",\", \".\")\r\nEnd Function\r\nvCellValue = Replace    (Nz(rDaten. _    Fields(iSpalte).Value),vbCrLf, _     vbLf)\r\nExcelSheet.ActiveSheet.Cells(iZeile, _    iSpalte + 1).Value = vCellValue<\/pre>\n<p>Mit der Replace-Funktion werden einfach alle Folgen der Zeichen 13 und 10 durch das ASCII-Zeichen 10 ersetzt. Damit lassen sich dann auch mehrzeilige Texte fehlerfrei nach Excel einfach &uuml;bertragen.<\/p>\n<p><b>Zahlenfelder<\/b><\/p>\n<p>Die VBA-Routine f&uuml;r den Datenexport unterscheidet nur zwischen Hyperlink- und anderen Feldern. Eine weitere Unterscheidung zwischen Text- und Zahlenfeldern erfolgt an dieser Stelle nicht und ist prinzipiell auch nicht erforderlich.<\/p>\n<p>Es sei denn, dass Sie mit den Zahlen in Excel auch rechnen wollen. Dann werden Sie n&auml;mlich feststellen, dass Access zwar die Feldwerte sauber nach Excel &uuml;bertr&auml;gt, diese dort aber nicht als Zahlen, sondern als Texte eingef&uuml;gt werden. Das Rechnen mit diesen Werten ist deshalb nicht m&ouml;glich.<\/p>\n<p>Die Ursache f&uuml;r dieses Verhalten besteht darin, dass Access die Feldwerte offenbar mit dem Komma als Dezimaltrennzeichen an Excel liefert, Excel die Werte bei der &#8222;Eingabe&#8220; &uuml;ber VBA aber in der englischen Schreibweise, also mit dem Punkt als Dezimaltrennzeichen erwartet.<\/p>\n<p>In der Beispieldatenbank macht sich das Konvertierungsproblem bei den Frachtkosten bemerkbar. Um es zu l&ouml;sen, hat die Abfrage qryBestellungenUndKunden das berechnete Feld Fracht mit folgendem Ausdruck erhalten:<\/p>\n<pre>Fracht: ToEnglish([Frachtkosten])<\/pre>\n<p>Die Funktion ToEnglish finden Sie im Modul modExcelTransfer. Sie ersetzt das Komma durch den Punkt als Dezimaltrennzeichen. Das alleine reicht aus, damit Excel die Frachtkosten als Zahlen und nicht als Texte interpretiert (s. Quellcode 12).<\/p>\n<p>Nachdem Sie alle Daten in das Excel-Arbeitsblatt &uuml;bertragen haben, empfiehlt sich die Formatierungen der Zeilen und Spalten. Dieser Bereich des Programmcodes beginnt mit der Definition der Variablen sMaxZeile und sRange. sMaxZeile enth&auml;lt die Nummer der letzten Zeile des Arbeitsblatts in die Daten geschrieben wurde. sRange enth&auml;lt den Wert des gesamten Bereichs des Arbeitsblatts als Text (z. B. A1:R10).<\/p>\n<pre>Dim sMaxZeile As String\r\nsMaxZeile = LTrim(Str(iZeile - 1))\r\nDim sRange As String\r\nsRange = \"A1:R\" & sMaxZeile<\/pre>\n<p><b>Frachtkosten als W&auml;hrungsfeld formatieren<\/b><\/p>\n<p>Mit der oben beschriebenen Funktion ToEnglish haben Sie das Zahlenfeld Frachtkosten nunmehr auch als Spalte mit numerischen Werten im Arbeitsblatt generiert. <\/p>\n<p>Um die Werte dieser Spalte mit dem Euro-Symbol zu markieren, gen&uuml;gt der folgende Zweizeiler:<\/p>\n<pre>ExcelSheet.ActiveSheet.Range(\"J2:J\" _     & sMaxZeile).Select\r\nExcelSheet.Selection.NumberFormat = _\r\n    \"_ * #,##0.00_  [$&euro;-1]_ ;_ * -_    #,##0.00  [$&euro;-1]_ ;_ * _    \"\"-\"\"_  [$&euro;-1]_ ;_ @_ \"\r\n'' Ganzes Sheet formatieren\r\nExcelSheet.ActiveSheet.Range(sRange).Select\r\nWith ExcelSheet.Selection\r\n    .WrapText = False\r\n    .Orientation = 0\r\n    .ShrinkToFit = True\r\n    .MergeCells = False\r\nEnd With\r\n'' Spaltenbreite anpassen\r\nExcelSheet.ActiveSheet.columns(\"A:R\"). _    Entirecolumn.autofit\r\n'' &uuml;berschrift formatieren\r\nExcelSheet.ActiveSheet.Range(\"A1:R1\").Select\r\nWith ExcelSheet.Selection\r\n    .Interior.ColorIndex = 36\r\n    .Font.ColorIndex = 1\r\n    .Font.Bold = True\r\nEnd With\r\nQuellcode 13<\/pre>\n<p>Die Select-Methode des Range-Objekts markiert den Bereich, auf den die NumberFormat-Methode angewendet wird.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Wenn Sie sich jetzt fragen, wie man als Programmierer auf solche Zahlenformate kommt, kann ich Sie beruhigen. Sie erhalten den Programmcode, indem Sie in Excel den Befehl Extras \/ Makro aufzeichnen w&auml;hlen. Excel zeichnet dann alle Befehle, die Sie &uuml;ber die Oberfl&auml;che initiieren, als VBA-Code auf, bis Sie den Vorgang mit einem Klick auf das Symbol Aufzeichnung beenden beenden. Anschlie&szlig;end k&ouml;nnen Sie mit Alt + F11 den Editor von Excel &ouml;ffnen und sich den aufgezeichneten Code ansehen. Um den Programmcode auch in Access einsetzen zu k&ouml;nnen, m&uuml;ssen Sie z. B. Range(&#8222;C3:E8&#8220;).Select durch ExcelSheet.ActiveSheet. Range(&#8222;C3:E8&#8220;).Select ersetzen, also den Namen des Excel- und des Active-Objekts voranstellen. <\/p>\n<p><b>Weitere Formatierungen<\/b><\/p>\n<p>Der Programmcode aus Quellcode 13 ist weitgehend selbsterkl&auml;rend. Er verrichtet folgende Aufgaben:<\/p>\n<li>Zeilenumbr&uuml;che f&uuml;r gesamtes Arbeitsblatt ausschalten (WrapText = False)<\/li>\n<li>Breiten aller Spalten automatisch anpassen (Autofit)<\/li>\n<li>&uuml;berschriftenzeile farbig und in Fettschrift formatieren<\/li>\n<li>Ausrichtung und Zeilenumbruch f&uuml;r alle Zeilen au&szlig;er der &uuml;berschriftenzeile einstellen<\/li>\n<li>Zeilenh&ouml;he automatisch anpassen<\/li>\n<li>Cursor auf linke obere Ecke positionieren<\/li>\n<li>Arbeitsblatt speichern und schlie&szlig;en<\/li>\n<li>Variablen wieder freigeben<\/li>\n<li>Minimale Fehlerbehandlungsroutine<\/li>\n<pre>'' Ausrichtung f&uuml;r gesamtes Sheet ohne &uuml;berschriftenzeile '' einstellen\r\nExcelSheet.ActiveSheet.Range(\"A2:R\" & sMaxZeile).Select\r\nDim xlGeneral As Integer\r\nxlGeneral = 1\r\nDim xlTop As Integer\r\nxlTop = -4160\r\nDim xlBottom As Integer\r\nxlBottom = -4107\r\nWith ExcelSheet.Selection\r\n    .HorizontalAlignment = xlGeneral\r\n    .VerticalAlignment = xlBottom\r\n    .WrapText = True\r\n    .Orientation = 0\r\n    .AddIndent = False\r\n    .ShrinkToFit = True\r\n    .MergeCells = False\r\nEnd With\r\n'' Zeilenh&ouml;he anpassen\r\nExcelSheet.ActiveSheet.Rows(\"1:\" & sMaxZeile).EntireRow.autofit\r\nExcelSheet.ActiveSheet.Cells(1, 1).Select\r\nExit_ExportQueryToExcel:\r\n'' Schlie&szlig;en von Excel mit der Quit-Methode des\r\n'' Application-Objekts.\r\nExcelSheet.ActiveWorkbook.Save\r\n'' Freigeben der Objektvariable.\r\nSet ExcelSheet = Nothing\r\nrDaten.Close\r\nSet rDaten = Nothing\r\nSet dbs = Nothing\r\nExit Sub\r\n''Fehlerbehandlung:\r\nErr_ExportQueryToExcel:\r\n    MsgBox Err.Description, vbCritical, \"Fehler beim Export zu Excel\"\r\n    Resume Exit_ExportQueryToExcel\r\nQuellcode 13 (Fortsetzung)<\/pre>\n<li>Die beschriebene L&ouml;sung zum Export von Daten bietet noch reichlich Erweiterungspotential. So k&ouml;nnten Sie die Routine beispielsweise dahingehend erweitern, dass sie mit beliebigen Datenquellen zusammenarbeitet und die Formatierungsmerkmale aus einer Objekttabelle gelesen werden.<\/li>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>ExportToExcel00.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/B72BD18A-5151-4301-85BF-3B0C4D056C64\/aiu_30.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine h&auml;ufige Anforderung an die Datenbank Microsoft Access besteht darin, die gespeicherten Daten auch unter Excel zur Verf&uuml;gung zu stellen. Excel eignet sich hervorragend f&uuml;r Auswertungen und Diagramme, die ad hoc am Bildschirm erstellt werden. Hier kann auch der Anwender ohne Programmiererfahrung mit entsprechender Fachkenntnis schnell zu &uuml;berzeugenden Ergebnissen kommen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662001,66052001,44000032,44000034],"tags":[],"class_list":["post-55000030","post","type-post","status-publish","format-standard","hentry","category-662001","category-66052001","category-Excel","category-ImportExport"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Export nach Excel - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Export nach Excel\" \/>\n<meta property=\"og:description\" content=\"Eine h&auml;ufige Anforderung an die Datenbank Microsoft Access besteht darin, die gespeicherten Daten auch unter Excel zur Verf&uuml;gung zu stellen. Excel eignet sich hervorragend f&uuml;r Auswertungen und Diagramme, die ad hoc am Bildschirm erstellt werden. Hier kann auch der Anwender ohne Programmiererfahrung mit entsprechender Fachkenntnis schnell zu &uuml;berzeugenden Ergebnissen kommen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-10T18:42:58+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg02.met.vgwort.de\/na\/692e5bf552ec4df392a30d378b6265b9\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"22\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Export nach Excel\",\"datePublished\":\"2021-02-10T18:42:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/\"},\"wordCount\":3587,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/692e5bf552ec4df392a30d378b6265b9\",\"articleSection\":[\"2001\",\"5\\\/2001\",\"Excel\",\"Import\\\/Export\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/\",\"name\":\"Export nach Excel - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/692e5bf552ec4df392a30d378b6265b9\",\"datePublished\":\"2021-02-10T18:42:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/692e5bf552ec4df392a30d378b6265b9\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/692e5bf552ec4df392a30d378b6265b9\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Export_nach_Excel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Export nach Excel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Export nach Excel - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/","og_locale":"de_DE","og_type":"article","og_title":"Export nach Excel","og_description":"Eine h&auml;ufige Anforderung an die Datenbank Microsoft Access besteht darin, die gespeicherten Daten auch unter Excel zur Verf&uuml;gung zu stellen. Excel eignet sich hervorragend f&uuml;r Auswertungen und Diagramme, die ad hoc am Bildschirm erstellt werden. Hier kann auch der Anwender ohne Programmiererfahrung mit entsprechender Fachkenntnis schnell zu &uuml;berzeugenden Ergebnissen kommen.","og_url":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-10T18:42:58+00:00","og_image":[{"url":"http:\/\/vg02.met.vgwort.de\/na\/692e5bf552ec4df392a30d378b6265b9","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"22\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Export nach Excel","datePublished":"2021-02-10T18:42:58+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/"},"wordCount":3587,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/692e5bf552ec4df392a30d378b6265b9","articleSection":["2001","5\/2001","Excel","Import\/Export"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/","url":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/","name":"Export nach Excel - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/692e5bf552ec4df392a30d378b6265b9","datePublished":"2021-02-10T18:42:58+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/692e5bf552ec4df392a30d378b6265b9","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/692e5bf552ec4df392a30d378b6265b9"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Export_nach_Excel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Export nach Excel"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000030"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000030\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}