{"id":55000693,"date":"2009-12-01T00:00:00","date_gmt":"2020-05-22T22:18:46","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=693"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Excel_automatisieren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/","title":{"rendered":"Excel automatisieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/bca75914e9c243919d7dbeecabe6de8c\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Es kommt immer wieder vor, dass Sie als Access-Entwickler Daten aus Excel-Dateien lesen oder auch in Excel-Tabellen schreiben m&uuml;ssen. Excel l&auml;sst sich genau wie die &uuml;brigen Office-Anwendungen per VBA steuern, sodass Sie Excel f&uuml;r den Zugriff auf die Daten in einer Excel-Datei nicht manuell &ouml;ffnen m&uuml;ssen. Wie dies funktioniert und was Sie alles anstellen k&ouml;nnen, erfahren Sie in diesem Grundlagenbeitrag.<\/b><\/p>\n<p>F&uuml;r die Automatisierung von Excel von Access aus kann es verschiedene Gr&uuml;nde geben. Im Wesentlichen teilen sich diese auf die folgenden beiden Gruppen auf:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Sie m&ouml;chten Daten aus einer Excel-Datei auslesen.<\/li>\n<li class=\"aufz-hlung\">Sie m&ouml;chten eine Excel-Datei mit Daten f&uuml;llen oder die enthaltenen Daten bearbeiten und daf&uuml;r gegebenenfalls zun&auml;chst eine neue Excel-Datei erstellen.<\/li>\n<\/ul>\n<p><b>Zugriff auf Excel<\/b><\/p>\n<p>In beiden F&auml;llen greifen Sie auf eine Excel-Instanz und die damit ge&ouml;ffnete Excel-Datei zu. Dies k&ouml;nnen Sie, wie bei Automation &uuml;blich, auf zwei Arten tun: Sie setzen einen Verweis auf die Bibliothek <b>Microsoft Excel x.0 Object Library <\/b>und greifen danach bequem per IntelliSense auf die VBA-Objekte der Excel-Bibliothek zu (Early Binding) oder Sie deklarieren die verwendeten Variablen mit dem Datentyp <b>Object<\/b>, anstatt die in der Excel-Bibliothek enthaltenen Objekte zu verwenden (Late Binding). F&uuml;r unsere Zwecke soll Early Binding zum Einsatz kommen.<\/p>\n<p>Daher stellen Sie im <b>Verweise<\/b>-Dialog einen entsprechenden Verweis wie in Bild 1 ein. &Ouml;ffnen Sie dazu den VBA-Editor (<b>Alt + F11<\/b>) und w&auml;hlen Sie den Men&uuml;eintrag <b>Extras|Verweise <\/b>aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic001_opt.jpeg\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Verweis auf die Excel-Bibliothek im Verweise-Dialog des VBA-Editors<\/span><\/b><\/p>\n<p>Manchmal kann es sinnvoll sein, sp&auml;ter auf Late Binding umzustellen, der besseren Lesbarkeit des Codes halber verzichten wir an dieser Stelle aber darauf.<\/p>\n<p><b>Excel-Instanz erzeugen<\/b><\/p>\n<p>Bevor Sie eine Excel-Instanz erzeugen k&ouml;nnen, brauchen Sie eine Variable, in der Sie diese speichern k&ouml;nnen:<\/p>\n<pre>Dim objExcel As Excel.Application<\/pre>\n<p>Danach k&ouml;nnen Sie mit der folgenden Anweisung eine neue Instanz erzeugen:<\/p>\n<pre>Set objExcel = New Excel.Application<\/pre>\n<p>Das Setzen der Instanzvariablen auf Nothing schlie&szlig;t gleichzeitig eine so erzeugte Excel-Instanz:<\/p>\n<pre>Set objExcel = New Excel.Application<\/pre>\n<p>Vielleicht m&ouml;chten Sie auch auf eine bestehende Excel-Instanz zugreifen, um beispielsweise ein durch den Benutzer ge&ouml;ffnetes Excel-Fenster fernzusteuern. Dies erledigen Sie mit dieser Anweisung:<\/p>\n<pre>Set objExcel = GetObject(, &quot;Excel.Application&quot;)<\/pre>\n<p>Das funktioniert aber nur, wenn auch eine Excel-Instanz vorliegt. Wenn nicht, erhalten Sie eine Fehlermeldung mit der Nummer <b>429 <\/b>und dem Text <b>Objekterstellung durch ActiveX-Komponente nicht m&ouml;glich <\/b>(siehe Bild 2). Diesen Fehler k&ouml;nnen Sie im Code beispielsweise so abfangen:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic003_opt.jpeg\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Diese Fehlermeldung erscheint beim Versuch, eine nicht vorhandene Excel-Instanz zu referenzieren.<\/span><\/b><\/p>\n<pre>On Error Resume Next\r\nSet objExcel = GetObject(, &quot;Excel.Application&quot;)\r\nIf Err.Number = 429 Then\r\n    MsgBox &quot;Excel ist nicht ge&ouml;ffnet.&quot;\r\nEnd If<\/pre>\n<p>Wenn bei nicht vorhandener Excel-Instanz eine neue ge&ouml;ffnet werden soll, erweitern Sie den Code wie folgt:<\/p>\n<pre>On Error Resume Next\r\nSet objExcel = GetObject(, &quot;Excel.Application&quot;)\r\nIf Err.Number = 429 Then\r\n    Set objExcel = _\r\n    CreateObject(&quot;Excel.Application&quot;)\r\nEnd If\r\nOn Error GoTo 0<\/pre>\n<p><b>objExcel <\/b>enth&auml;lt dann auf jeden Fall einen Verweis auf eine Excel-Instanz &#8211; vorausgesetzt, dass Excel &uuml;berhaupt auf dem Rechner installiert ist. Nun haben Sie allerdings zwei verschiedene Methoden gesehen, um eine frische Excel-Instanz zu erzeugen:<\/p>\n<pre>Set objExcel = New Excel.Application<\/pre>\n<p>und<\/p>\n<pre>Set objExcel = CreateObject(&quot;Excel.Application&quot;)<\/pre>\n<p>Wo ist hier der Unterschied Beide Anweisungen erledigen die gleiche Aufgabe, allerdings funktioniert die erste nur, wenn Sie mit Early Binding arbeiten, also ein Verweis auf die Excel-Bibliothek vorhanden ist.<\/p>\n<p>An dieser Stelle sei auch auch noch etwas zum &Uuml;bernehmen einer bestehenden Excel-Instanz angemerkt: Sie sollten dies nur tun, wenn es die Situation unbedingt erfordert, wof&uuml;r es kaum Beispiele gibt. Gegebenenfalls k&ouml;nnte man es mit Performance-Gr&uuml;nden rechtfertigen, aber bei der heutigen Rechenleistung sollte ein Rechner zwei oder mehr parallel ge&ouml;ffnete Excel-Instanzen verkraften k&ouml;nnen.<\/p>\n<p>Wenn Sie f&uuml;r Ihre Aufgabe eine eigene Excel-Instanz &ouml;ffnen und diese nicht sichtbar machen, k&ouml;nnen Sie davon ausgehen, dass der Benutzer nicht anderweitig auf diese zugreift. Daher k&ouml;nnen Sie diese Instanz auch ohne Gewissensbisse wieder schlie&szlig;en &#8211; Sie nehmen sie niemandem weg.<\/p>\n<p>Und wenn Sie sich davon &uuml;berzeugen m&ouml;chten, dass Windows tats&auml;chlich eine neue Excel-Instanz erzeugt und keine vorhandene Instanz verwendet, wenn Sie per Code eine neue Instanz erzeugen, k&ouml;nnen Sie das Experiment aus Bild 3 ausf&uuml;hren und sich im Task-Manager davon &uuml;berzeugen, dass mehrere Excel-Instanzen existieren.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic002_opt.jpeg\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: &Ouml;ffnen mehrere Excel-Instanzen per Code und ihre Pendants im Task-Manager<\/span><\/b><\/p>\n<p>Hier brauchen Sie im &Uuml;brigen nur die Excel-Objektvariablen durch Setzen auf <b>Nothing<\/b> zu leeren, um die Excel-Instanzen zu beenden &#8211; sp&auml;ter erfahren Sie, dass dies nicht immer ausreicht.<\/p>\n<p><b>Funktion zum Erzeugen einer Excel-Instanz<\/b><\/p>\n<p>Manchmal brauchen Sie eine Excel-Instanz nur ganz kurz, um etwa ein Excel-Workbook zu &ouml;ffnen, manchmal arbeiten Sie auch l&auml;nger mit dieser Instanz.<\/p>\n<p>In beiden F&auml;llen kann es nicht schaden, den Code zum Erzeugen der Excel-Instanz in eine kleine Funktion auszulagern. Die Excel-Instanz selbst speichern wir in einer Objektvariablen in einem Standardmodul, dass beispielsweise <b>mdlExcel <\/b>hei&szlig;en k&ouml;nnte:<\/p>\n<pre>Dim mExcel As Excel.Application<\/pre>\n<p>Dazu bauen wir uns eine kleine Funktion, die schaut, ob bereits eine Excel-Instanz in <b>mExcel <\/b>gespeichert wurde und dies gegebenenfalls nachholt. Der in <b>mExcel <\/b>gespeicherte Verweis wir in jedem Fall als &Uuml;bergabewert der Funktion <b>GetExcel <\/b>zur&uuml;ckgeliefert:<\/p>\n<pre>Public Function GetExcel() As _\r\n    Excel.Application\r\n    If mExcel Is Nothing Then\r\n        Set mExcel = _\r\n        New Excel.Application\r\n    End If\r\n    Set GetExcel = mExcel\r\nEnd Function<\/pre>\n<p><b>Excel-Datei erzeugen<\/b><\/p>\n<p>Wenn Sie in <b>objExcel <\/b>eine Referenz auf eine Excel-Instanz gespeichert haben, k&ouml;nnen Sie damit ein neues Dokument erzeugen. Daf&uuml;r deklarieren Sie zun&auml;chst eine entsprechende Variable:<\/p>\n<pre>Dim objWorkbook As Excel.Workbook<\/pre>\n<p>Danach k&ouml;nnen Sie diese Variable durch Verwenden der <b>Add<\/b>-Anweisung der <b>Workbooks<\/b>-Auflistung des <b>Application<\/b>-Objekts erstellen:<\/p>\n<pre>Set objWorkbook = objExcel.Workbooks.Add<\/pre>\n<p>Nun k&ouml;nnen Sie die Excel-Datei mit den weiter unten beschriebenen Methoden bearbeiten und diese dann schlie&szlig;en:<\/p>\n<pre>objWorkbook.Close<\/pre>\n<p>Das ist unbedingt erforderlich, denn sonst reicht die folgende Anweisung nicht aus, um die Excel-Instanz zu beenden:<\/p>\n<pre>Set objExcel = Nothing<\/pre>\n<p>Alternativ k&ouml;nnen Sie Excel vor dem Leeren der Variablen auch explizit per Code schlie&szlig;en:<\/p>\n<pre>objExcel.Quit<\/pre>\n<p>Es gibt aber auch noch eine wesentlich direktere Methode, die Sie vor allem dann nutzen sollten, wenn Sie nur auf das Workbook und nicht direkt auf die Excel-Instanz zugreifen m&ouml;chten:<\/p>\n<pre>Set objWorkbook = CreateObject(&quot;Excel.Sheet&quot;)<\/pre>\n<p><b>Excel sichtbar machen<\/b><\/p>\n<p>Alles, was wir in den bisherigen Beispielen mit Excel erledigt haben (was ja nicht viel war), geschah im Hintergrund, also ohne Anzeigen des Excel-Fensters.<\/p>\n<p>Bevor wir gleich in den Zugriff auf Excel-Dateien einsteigen, erfahren Sie noch, wie Sie die Excel-Instanz sichtbar machen. Dies erledigt die folgende Anweisung:<\/p>\n<pre>objExcel.Visible = True<\/pre>\n<p><b>Excel-Datei &ouml;ffnen<\/b><\/p>\n<p>F&uuml;r den Zugriff auf eine bestehende Excel-Datei verwenden Sie die folgende Anweisung, die auf der oben genannten Vorgehensweise zum Erzeugen oder Holen einer Excel-Instanz basiert.<\/p>\n<p>Mit dieser Instanz k&ouml;nnen Sie dann Folgendes tun:<\/p>\n<pre>Set objWorkbook = objExcel.Workbooks.Open(&quot;c:\\Beispiel.xls&quot;)<\/pre>\n<p>Auch hier gibt es eine zweite Variante. Dabei &uuml;bergeben Sie einfach den Dateinamen an die <b>CreateObject<\/b>-Methode:<\/p>\n<pre>Set objWorkbook = CreateObject(&quot;c:\\Beispiel.xls&quot;)<\/pre>\n<p><!--30percent--><\/p>\n<p><b>Funktion zum einfachen &Ouml;ffnen einer Excel-Datei<\/b><\/p>\n<p>Genau wie f&uuml;r das Erzeugen einer Excel-Instanz wollen wir auch eine einfache Funktion zum &Ouml;ffnen eines Excel-Workbooks programmieren.<\/p>\n<p>Diese setzt auf der oben bereits vorgestellten Funktion <b>GetExcel <\/b>auf und und &ouml;ffnet die als Parameter angegebene Datei in der damit verf&uuml;gbar gemachten Excel-Instanz:<\/p>\n<pre>Public Function GetWorkbook(strPath As String) _\r\n    As Excel.Workbook\r\n    Dim objWorkbook As Excel.Workbook\r\n    Set objWorkbook = _\r\n    GetExcel.Workbooks.Open(strPath)\r\n    Set GetWorkbook = objWorkbook\r\nEnd Function<\/pre>\n<p>Wenn Sie ein Workbook &ouml;ffnen und in einer Prozedur damit arbeiten m&ouml;chten, brauchen Sie also nur eine entsprechende Objektvariable zu deklarieren und diese mit Hilfe der Funktion <b>GetWorkbook <\/b>zu f&uuml;llen:<\/p>\n<pre>Dim objWorkbook As Excel.Workbook\r\nSet objWorkbook = GetWorkbook(&quot;c:\\Beispiel.xls&quot;)<\/pre>\n<p>Um die nachfolgenden Beispiele kurz zu halten, greifen wir immer wieder auf diese beiden Zeilen zur&uuml;ck.<\/p>\n<p><b>Ein oder mehrere Workbooks<\/b><\/p>\n<p>Eine Excel-Instanz kann ein oder mehrere Workbooks enthalten. Diese lassen sich mit der <b>Workbooks<\/b>-Auflistung des <b>Application<\/b>-Objekts referenzieren.<\/p>\n<p>In den folgenden Beispielen gehen wir jedoch davon aus, dass wir immer nur ein Workbook in einer frischen Excel-Instanz &ouml;ffnen und lesend oder schreibend darauf zugreifen.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Zugriff auf Tabellenbl&auml;tter<\/p>\n<p>Ein Verweis auf die Excel-Datei, in diesem Fall repr&auml;sentiert durch einen Objektverweis des Typs <b>Excel.Workbook<\/b>, reicht noch nicht aus, um auf die Inhalte der Zellen zuzugreifen.<\/p>\n<p>Jedes Workbook enth&auml;lt n&auml;mlich verschiedene Worksheet-Objekte &#8211; das sind die einzelnen Tabellenbl&auml;tter, die Sie &uuml;ber die Registerkartenreiter unter der Tabelle ausw&auml;hlen k&ouml;nnen (siehe Bild 4).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic004_opt.jpeg\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Excel-Datei mit den drei standardm&auml;&szlig;ig vorhandenen Sheets<\/span><\/b><\/p>\n<p>Mit den folgenden Zeilen &ouml;ffnen Sie eine Excel-Datei und durchlaufen alle enthaltenen Sheets, wobei Sie deren Namen im Direktfenster ausgeben:<\/p>\n<pre>Dim objWorkbook As Excel.Workbook\r\nDim objSheet As Excel.Worksheet\r\nSet objWorkbook = GetWorkbook(&quot;c:\\Beispiel.xls&quot;)\r\nFor Each objSheet In objWorkbook.Worksheets\r\n    Debug.Print objSheet.Name\r\nNext objSheet<\/pre>\n<p>Der direkte Zugriff auf eines der Worksheets erfolgt entweder &uuml;ber den Index oder die Bezeichnung. Bei Verwendung des Index ist zu beachten, dass dieser immer bei <b>1 <\/b>beginnt und nicht bei <b>0<\/b>:<\/p>\n<pre>Debug.Print objWorkbook.Worksheets(1).Name<\/pre>\n<p>Das Gleiche funktioniert auch direkt &uuml;ber den Namen:<\/p>\n<pre>Debug.Print objWorkbook.Worksheets(&quot;Tabelle1&quot;).Name<\/pre>\n<p>Wenn Sie Operationen in einem einzigen Worksheet ausf&uuml;hren m&ouml;chten, speichern Sie einen Verweis darauf in einer Variablen des Typs <b>Excel.Worksheet<\/b> und greifen dann auf dieses zu.<\/p>\n<p><b>Zellen lesen und beschreiben<\/b><\/p>\n<p>Egal, ob Sie lesend oder schreibend auf die Zellen eines Tabellenblatts unter Excel zugreifen m&ouml;chten: Die Vorgehensweise ist fast identisch. Zur Veranschaulichung der folgenden Beispiele verwenden wir die Excel-Tabelle mit den Daten aus Bild 5 (alle Zellen sind als <b>Text <\/b>formatiert).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic005_opt.jpeg\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Beispielf&uuml;llungen in einer Excel-Tabelle<\/span><\/b><\/p>\n<p>Wenn Sie etwa den Inhalt der ersten Zelle in eine Variable einlesen m&ouml;chten, verwenden Sie die folgende Anweisung (wir gehen davon aus, dass Sie die Objektvariable <b>objSheet <\/b>zuvor mit einer der oben genannten Methoden mit einem Verweis auf das betreffende Tabellenblatt gef&uuml;llt haben):<\/p>\n<pre>Debug.Print objSheet.Cells(1, 1)\r\n1,1\/A1<\/pre>\n<p>Der erste Parameter der <b>Cells<\/b>-Funktion erwartet die Angabe des Spaltenindex, der zweite den Zeilenindex.<\/p>\n<p>Die <b>Cells<\/b>-Funktion liefert immer eine einzige Zelle zur&uuml;ck. Die <b>Range<\/b>-Funktion kann noch mehr, aber zun&auml;chst schauen wir uns an, wie Sie mit ihr auf den Inhalt einer Zelle zugreifen:<\/p>\n<pre>Debug.Print objSheet.Range(&quot;A1&quot;)\r\n1,1\/A1<\/pre>\n<p>Was kann <b>Range <\/b>nun mehr als <b>Cells<\/b> Auch wenn die Bezeichnung <b>Cells <\/b>suggeriert, dass man damit auch mehrere Zellen referenzieren k&ouml;nne, ist dies nicht der Fall &#8211; die Funktion liefert immer eine Zelle zur&uuml;ck, genau genommen ein <b>Range<\/b>-Objekt, das genau diese Zelle enth&auml;lt.<\/p>\n<p>Und da die Eigenschaft <b>Value <\/b>die Standardeigenschaft des <b>Range<\/b>-Objekts ist, liefern sowohl <b>Cells(1,1) <\/b>als auch <b>Range(&quot;A1&quot;) <\/b>den Inhalt der angegebenen Zelle.<\/p>\n<p>Nun kann <b>Range <\/b>aber auch mehr als eine Zelle enthalten. Wenn Sie etwa mit der folgenden Anweisung alle gef&uuml;llten Zellen unserer Beispieltabelle referenzieren, k&ouml;nnen Sie das Ergebnis nicht mehr mit der <b>Debug.Print<\/b>-Methode ausgeben &#8211; dies w&uuml;rde einen Fehler erzeugen.<\/p>\n<p>Die folgenden Anweisungen definieren das gew&uuml;nschte <b>Range<\/b>-Objekt und geben die Anzahl der Spalten, Zeilen und Zellen dieses Objekts aus:<\/p>\n<pre>Dim objRange As Excel.Range\r\nSet objRange = objSheet.Range(&quot;A1:C3&quot;)\r\nDebug.Print &quot;Zeilen: &quot; &amp; objRange.Rows.Count\r\nDebug.Print &quot;Spalten: &quot; &amp; objRange.Columns.Count\r\nDebug.Print &quot;Zellen: &quot; &amp; objRange.Cells.Count<\/pre>\n<p><b>Range-Bereich ausgeben<\/b><\/p>\n<p>Beim Experimentieren mit dem <b>Range<\/b>-Bereich kann es manchmal interessant sein, wie der aktuell verwendete <b>Range<\/b> definiert ist. Hier&uuml;ber gibt die Address-Funktion Auskunft.<\/p>\n<p>Angenommen, Sie definieren dieses <b>Range<\/b>-Objekt:<\/p>\n<pre>Set objRange = objSheet.Range(&quot;A1:C3&quot;)<\/pre>\n<p>Dann gibt die <b>Adress<\/b>-Methode Folgendes aus<\/p>\n<pre>Debug.Print objRange.Address\r\n$B$2:$D$4<\/pre>\n<p><b>Range durchlaufen<\/b><\/p>\n<p>Wenn Sie alle Zellen dieses <b>Range<\/b>-Objekts durchlaufen m&ouml;chten, brauchen Sie nur zwei Laufvariablen und die folgenden <b>For&#8230;Next<\/b>-Schleifen:<\/p>\n<pre>Dim objRange As Excel.Range\r\nDim intRow As Integer\r\nDim intColumn As Integer\r\nSet objRange = objSheet.Range(&quot;A1:C3&quot;)\r\nFor intColumn = 1 To objRange.Columns.Count\r\n    For intRow = 1 To objRange.Rows.Count\r\n        Debug.Print _\r\n        objRange.Cells(intColumn, intRow)\r\n    Next intRow\r\nNext intColumn<\/pre>\n<p>Dies durchl&auml;uft alle Elemente des <b>Range<\/b>-Objekts, wobei <b>intColumn <\/b>und <b>intRow <\/b>die Koordinaten relativ zur linken oberen Ecke des <b>Range<\/b>-Objekts darstellen.<\/p>\n<p>Wenn Sie dies relativ zur linken oberen Zelle der kompletten Tabellenblatts durchf&uuml;hren m&ouml;chten, verwenden Sie eine etwas andere Herangehensweise. Sie definieren dann kein <b>Range<\/b>-Objekt, sondern greifen direkt auf die <b>Cells<\/b>-Auflistung des <b>Worksheet<\/b>-Objekts zu:<\/p>\n<pre>Dim intRow As Integer\r\nDim intColumn As Integer\r\nFor intColumn = 1 To 3\r\n    For intRow = 1 To 3\r\n        Debug.Print _\r\n        objSheet.Cells(intColumn, intRow)\r\n    Next intRow\r\nNext intColumn<\/pre>\n<p><b>Zeilen und Spalten im Range-Objekt<\/b><\/p>\n<p>Mit einem <b>Range<\/b>-Objekt k&ouml;nnen Sie nicht nur durch zwei Zellen markierte Bereiche, sondern auch komplette Zeilen oder Spalten erfassen.<\/p>\n<p>Wenn Sie sich auf die Zeilen- beziehungsweise Spaltenk&ouml;pfe von Excel beziehen wollen, verwenden Sie die <b>Range<\/b>-Methode, um eine Spalte oder Zeile zu referenzieren.<\/p>\n<p>Die folgende Anweisung bezieht sich auf die komplette erste Spalte:<\/p>\n<pre>Set objRange = objSheet.Range(&quot;A:A&quot;)<\/pre>\n<p>Und dies ermittelt alle Zellen der ersten Zeile:<\/p>\n<pre>Set objRange = objSheet.Range(&quot;1:1&quot;)<\/pre>\n<p>Dies geht auch noch ein wenig intuitiver. Die folgenden beiden Anweisungen verwenden die <b>Rows<\/b>&#8211; beziehungsweise <b>Columns<\/b>-Auflistungen, um einen Verweis auf die erste Zeile beziehungsweise Spalte des Excel-Blatts zu liefern:<\/p>\n<pre>Set objRange = objSheet.Columns(1)\r\nSet objRange = objSheet.Rows(1)<\/pre>\n<p><b>Range numerisch aufziehen<\/b><\/p>\n<p>Wenn Sie einen Range allein auf Basis numerischer Koordinaten aufziehen m&ouml;chten, so geht dies ganz einfach mit der <b>Resize<\/b>-Methode auf Basis eines durch die <b>Cells<\/b>-Funktion gelieferten <b>Range<\/b>-Objekts.<\/p>\n<p>Der folgende Aufruf beispielsweise liefert einen Range &uuml;ber die ersten drei mal drei Zellen einer Tabelle:<\/p>\n<pre>Set objRange = objSheet.Cells(1, 1).Resize(3, 3)<\/pre>\n<p>Wenn Sie andere Bereiche markieren m&ouml;chten, ersetzen Sie einfach die Werte durch die gew&uuml;nschten Koordinaten.<\/p>\n<p><b>Eine Zelle mit einem Wert f&uuml;llen<\/b><\/p>\n<p>Beim F&uuml;llen einer Zelle m&uuml;ssen Sie verschiedene Dinge beachten. So stellt Excel beispielsweise nicht automatisch die Formatierung der Zelle ein, wenn Sie beispielsweise ein Datum &uuml;bertragen.<\/p>\n<p>Dies erledigen Sie mit der Eigenschaft <b>NumberFormat<\/b>. Welche Werte Excel f&uuml;r <b>NumberFormat <\/b>verwendet, um die verschiedenen Datentypen zu formatieren, erfahren Sie ganz einfach mit den in diesem Beitrag vorgestellten Mitteln. In diesem Fall formatieren Sie einfach eine Zelle mit dem entsprechenden Dialog direkt in Excel (siehe Bild 6) und lesen die Formatierung dann mit der folgenden Anweisung ein:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic006_opt.jpeg\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Einstellen einer Zellenformatierung in Excel<\/span><\/b><\/p>\n<pre>Debug.Print _\r\nobjRange.NumberFormat<\/pre>\n<p><b>Eine Zelle mit einer Formel f&uuml;llen<\/b><\/p>\n<p>Wenn Sie beispielsweise auf die Idee kommen, eine Rechnung statt in einen Bericht in eine Excel-Tabelle zu schreiben, k&ouml;nnen Sie dies leicht tun.<\/p>\n<p>Nat&uuml;rlich sollten Sie dann auch gew&auml;hrleisten, dass die Rechnung beim &auml;ndern einzelner Rechnungspositionen noch den korrekten Rechnungsbetrag anzeigt.<\/p>\n<p>Dies ist in der Regel der Fall, wenn dieser durch eine entsprechende Formel berechnet wird. Ein vereinfachtes Beispiel sieht so aus:<\/p>\n<pre>With objWorksheet\r\n.Cells(1, 1) = 100\r\n.Cells(1, 1).NumberFormat = &quot;#,##0.00 $&quot;\r\n.Cells(1, 2) = 0.19\r\n.Cells(1, 2).NumberFormat = &quot;0.00%&quot;\r\n.Cells(1, 3) = &quot;=A1*(1+B1)&quot;\r\n.Cells(1, 3).NumberFormat = &quot;#,##0.00 $&quot;\r\nEnd With<\/pre>\n<p>Das Ergebnis finden Sie in Bild 7. Die Excel-Tabelle zeigt die formatierten Zellen mit den gew&uuml;nschten Inhalten an. Die Formel wird wie erwartet interpretiert. Der Clou hierbei ist, dass Sie der eigentlichen Formel wie bei der direkten Eingabe in Excel ein Gleichheitszeichen voranstellen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic007_opt.jpeg\" alt=\"pic007.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Die Formel und ihr Ergebnis.<\/span><\/b><\/p>\n<p><b>Formeln mit Funktionen<\/b><\/p>\n<p>Excel h&auml;lt eine ganze Schar von Funktionen bereit, zum Beispiel die <b>WENN<\/b>-Funktion. Diese gibt man, wenn man von der Eingabehilfe profitieren m&ouml;chte, unter Excel in der Sprache der jeweiligen Excel-Version ein (siehe Bild 8).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic008_opt.jpeg\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Wenn man Funktionsnamen in der deutschen Version auf deutsch eingibt, erscheint eine Eingabehilfe.<\/span><\/b><\/p>\n<p>Was in der Benutzeroberfl&auml;che von Excel funktioniert, muss dies unter Verwendung von VBA noch lange nicht tun. So f&uuml;hrt die folgende Zeile dann auch zu einem Fehler:<\/p>\n<pre>.Cells(1, 2) = &quot;=WENN(A1&gt;0;&quot;&quot;Positiv&quot;&quot;;&quot;&quot;Negativ&quot;&quot;)&quot;<\/pre>\n<p>Kein Wunder. Wir sollten vielleicht die Formula-Funktion verwenden, weil Excel die Formel m&ouml;glicherweise nicht als solche erkennt:<\/p>\n<pre>.Cells(1, 2).Formula = &quot;=WENN(A1&gt;0;&quot;&quot;Positiv&quot;&quot;;&quot;&quot;Negativ&quot;&quot;)&quot;<\/pre>\n<p>Auch dies funktioniert nicht! Ein Blick in den Objektkatalog zeigt jedoch, dass eine ganze Reihe <b>Formula&#8230;<\/b>-Eigenschaften gibt (siehe Bild 9).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic009_opt.jpeg\" alt=\"pic009.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9: Die verschiedenen Formula&#8230;-Eigenschaften im Objektkatalog<\/span><\/b><\/p>\n<p>Und kaum nimmt man die richtige, klappt es auch schon. Wegen des deutschen Funktionsnamens brauchen wir n&auml;mlich die Funktion <b>FormulaLocal<\/b>:<\/p>\n<pre>.Cells(1, 2).FormulaLocal = &quot;=WENN(A1&gt;0;&quot;&quot;Positiv&quot;&quot;;&quot;&quot;Negativ&quot;&quot;)&quot;<\/pre>\n<p><b>Bez&uuml;ge in Formeln<\/b><\/p>\n<p>Da dies oft nicht bekannt ist, ein kleiner Hinweis auf absolute und relative Bez&uuml;ge in Formeln. Wenn Sie den Inhalt einer Zelle mit einer Formel verschieben, &auml;ndert Excel normalerweise automatisch den Bezug relativ zu den Verschiebungskoordinaten der Formel.<\/p>\n<p>Wenn Sie also eine Zelle mit dem Inhalt <b>=A1 <\/b>um eine Spalte nach rechts und eine Zeile nach unten verschieben, passt Excel die Formel automatisch an, sodass diese nun <b>=B2 <\/b>lautet. Manchmal m&ouml;chten Sie aber, dass der absolute Bezug zum referenzierten Feld auch nach dem Verschieben der Formel erhalten bleibt.<\/p>\n<p>Dann brauchen Sie einfach nur ein Dollar-Zeichen ($) vor die Angabe des Spaltenbuchstabens und der Zeilenzahl einzuf&uuml;gen. Wenn die Formel <b>=$A$1 <\/b>lautet, dann &auml;ndert Excel ihren Wert auch nach dem Verschieben der Formel nicht. Wenn Sie nur die Zeile oder die Spalte erhalten m&ouml;chten, schreiben Sie das Dollar-Zeichen nur vor die jeweils betroffene Koordinate.<\/p>\n<p><b>Nummern statt Buchstaben<\/b><\/p>\n<p>Weiter oben haben wir erw&auml;hnt, dass Sie ein <b>Range<\/b>-Objekt &uuml;ber einzelne Zellen mit der <b>Cells<\/b>-Methode erhalten und diese mit der <b>Resize<\/b>-Methode in beiden Dimensionen erweitern k&ouml;nnen. Dies hat den Vorteil, dass Sie nicht auf die Range-Methode zugreifen m&uuml;ssen, um Zellen zu referenzieren. Der Nachteil der <b>Range<\/b>-Methode hierbei ist, dass die Koordinaten nicht ausschlie&szlig;lich mit Zahlen, sondern auch mit den Buchstaben aus den Spalten&uuml;berschriften angegeben werden m&uuml;ssen.<\/p>\n<p>Nat&uuml;rlich gibt es auch hier die M&ouml;glichkeit, die Angabe von Buchstaben zu umgehen &#8211; dabei referenzieren Sie einfach die linke obere und die rechte untere Zelle des per <b>Range <\/b>zu erfassenden Bereichs &uuml;ber entsprechende <b>Cells<\/b>-Funktionen.<\/p>\n<p>Diese werden dabei durch ein Komma voneinander getrennt. F&uuml;r einen <b>Range <\/b>&uuml;ber die Zellen von <b>A1 <\/b>bis <b>C3 <\/b>sieht dies so aus:<\/p>\n<pre>Set objRange = objSheet.Range(objSheet.Cells(1, 1), objSheet.Cells(3, 3))<\/pre>\n<p>Und auch f&uuml;r die in Formeln verwendeten Bez&uuml;ge gibt es eine Notation, die komplett auf Zahlen setzt &#8211; die sogenannte <b>R1C1<\/b>-Notation. Wenn Sie sich ein Bild davon machen wollen, wie diese funtioniert, stellen Sie am einfachsten die passende Option im Optionen-Dialog von Excel wie in Bild 10 ein.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic010_opt.jpeg\" alt=\"pic010.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10: Aktivieren der R1C1-Notation unter Excel<\/span><\/b><\/p>\n<p>Wenn Sie dann wie in Bild 11 ein Gleichheitszeichen in ein Feld setzen, um mit dem Anlegen einer Formel zu beginnen, und dann mit den Cursor-Tasten die umliegenden Zellen ablaufen, erkennen Sie die Systematik hinter dieser Notation.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_06\/ExcelAbfragen-web-images\/pic011_opt.jpeg\" alt=\"pic011.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11: Die R1C1-Notation in Aktion<\/span><\/b><\/p>\n<p>Wenn Sie beispielsweise in der Zelle <b>A11 <\/b>alle dar&uuml;berliegenden Zellen summieren m&ouml;chten, verwenden Sie die folgende Formel:<\/p>\n<pre>=SUMME(Z(-10)S:Z(-1)S)<\/pre>\n<p>Die englische Fassung w&uuml;rde unter VBA so angewendet:<\/p>\n<pre>=SUM(R[-10]C:R[-1]C)<\/pre>\n<p>Die hinter <b>R <\/b>und\/oder <b>C <\/b>angegebenen Zahlen geben immer die relative Position der betroffenen Zelle von der Zelle mit der Formel aus an.<\/p>\n<p>Beachten Sie den Unterschied bei der Verwendung von runden und eckigen Klammern.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Mit dem vorliegenden Beitrag haben Sie die Grundlagen f&uuml;r das Lesen und Schreiben von Daten in Excel-Workbooks kennengelernt. Hiermit k&ouml;nnen Sie beliebige Informationen aus Excel-Tabellen einlesen, aber auch dorthin schreiben. Ein Beispiel ist die kleine L&ouml;sung zum Erstellen von Tilgungspl&auml;nen aus dem Beitrag <b>Tilgen mit Access und Excel <\/b>(Shortlink 695).<\/p>\n<p>Generell k&ouml;nnen Sie sich Excel &uuml;berall dort als Reporting-Tool verf&uuml;gbar machen, wo Berichte m&ouml;glicherweise nicht weiterhelfen. Interessant ist der Export von Access-Daten nach Excel allemal, wenn der Benutzer noch mit den Daten herumspielen m&ouml;chte, um beispielsweise Berechnungen anzustellen &#8211; dies gelingt in einer Tabellenkalkulation wie Excel immer noch am besten.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>ExcelAutomatisieren.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{916F5DDC-74A0-4CF9-9208-D3CF0050029F}\/aiu_693.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es kommt immer wieder vor, dass Sie als Access-Entwickler Daten aus Excel-Dateien lesen oder auch in Excel-Tabellen schreiben m&uuml;ssen. Excel l&auml;sst sich genau wie die &uuml;brigen Office-Anwendungen per VBA steuern, sodass Sie Excel f&uuml;r den Zugriff auf die Daten in einer Excel-Datei nicht manuell &ouml;ffnen m&uuml;ssen. Wie dies funktioniert und was Sie alles anstellen k&ouml;nnen, erfahren Sie in diesem Grundlagenbeitrag.<\/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":[662009,66062009,44000026],"tags":[],"class_list":["post-55000693","post","type-post","status-publish","format-standard","hentry","category-662009","category-66062009","category-Interaktiv"],"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>Excel automatisieren - 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\/Excel_automatisieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Excel automatisieren\" \/>\n<meta property=\"og:description\" content=\"Es kommt immer wieder vor, dass Sie als Access-Entwickler Daten aus Excel-Dateien lesen oder auch in Excel-Tabellen schreiben m&uuml;ssen. Excel l&auml;sst sich genau wie die &uuml;brigen Office-Anwendungen per VBA steuern, sodass Sie Excel f&uuml;r den Zugriff auf die Daten in einer Excel-Datei nicht manuell &ouml;ffnen m&uuml;ssen. Wie dies funktioniert und was Sie alles anstellen k&ouml;nnen, erfahren Sie in diesem Grundlagenbeitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:18:46+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/bca75914e9c243919d7dbeecabe6de8c\" \/>\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=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Excel automatisieren\",\"datePublished\":\"2020-05-22T22:18:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/\"},\"wordCount\":2964,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/bca75914e9c243919d7dbeecabe6de8c\",\"articleSection\":[\"2009\",\"6\\\/2009\",\"Interaktiv\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/\",\"name\":\"Excel automatisieren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/bca75914e9c243919d7dbeecabe6de8c\",\"datePublished\":\"2020-05-22T22:18:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/bca75914e9c243919d7dbeecabe6de8c\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/bca75914e9c243919d7dbeecabe6de8c\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Excel_automatisieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Excel automatisieren\"}]},{\"@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":"Excel automatisieren - 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\/Excel_automatisieren\/","og_locale":"de_DE","og_type":"article","og_title":"Excel automatisieren","og_description":"Es kommt immer wieder vor, dass Sie als Access-Entwickler Daten aus Excel-Dateien lesen oder auch in Excel-Tabellen schreiben m&uuml;ssen. Excel l&auml;sst sich genau wie die &uuml;brigen Office-Anwendungen per VBA steuern, sodass Sie Excel f&uuml;r den Zugriff auf die Daten in einer Excel-Datei nicht manuell &ouml;ffnen m&uuml;ssen. Wie dies funktioniert und was Sie alles anstellen k&ouml;nnen, erfahren Sie in diesem Grundlagenbeitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:18:46+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/bca75914e9c243919d7dbeecabe6de8c","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Excel automatisieren","datePublished":"2020-05-22T22:18:46+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/"},"wordCount":2964,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/bca75914e9c243919d7dbeecabe6de8c","articleSection":["2009","6\/2009","Interaktiv"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/","url":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/","name":"Excel automatisieren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/bca75914e9c243919d7dbeecabe6de8c","datePublished":"2020-05-22T22:18:46+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/bca75914e9c243919d7dbeecabe6de8c","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/bca75914e9c243919d7dbeecabe6de8c"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Excel_automatisieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Excel automatisieren"}]},{"@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\/55000693","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=55000693"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000693\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}