Nach längerer Zeit mal ein neues Code-Snippet. Ich muss derzeit mit einem Script eine Möglichkeit bauen, eine Excel-Datei zu erzeugen und deren Befüllung zu steuern. Das mache ich mit Powershell. Dabei bin ich zunächst auf einige Schwierigkeiten gestoßen – das nachfolgende Script jedoch funktioniert als Grundlage problemlos. Damit lässt sich “geräuschlos” eine Excel-Datei im Hintergrund erzeugen.

Exceldatei mit Powershell erzeugen und steuern

Nachfolgende Dinge sollten beachtet werden:

Zeile 4 mit $Excel.visible = ‘true’ macht die erzeugte Excel-Instanz sichtbar, d.h. der User sieht alle Abläufe in Excel. Soll der Ablauf schneller erfolgen (weil z.B. mehrere Tausend Zellen gefüllt werden sollen) oder wenn man möchte, dass der User von dem Ablauf nichts mitbekommen soll, dann muss man den Wert auf ‘false’ setzen.

Zeile 24 verhindert, dass Meldungen wie ein Dateinamendialog angezeigt wird. Und Zeile 25 überschreibt eine bereits vorhandene Datei. Möchte man das vermeiden müsste eine Routine eingebaut werden, die das Vorhandensein der Datei prüft. Der gewählte Dateiname wird in Zeile 9 festgelegt.

Mit diesem Grundgerüst lässt sich einiges anfangen. Denkbar wäre, das Ganze als Funktion mit den Zellkoordinaten und deren Inhalt als Parameter aufzurufen oder den Teil mit der Inhaltsbefüllung in eine Schleife zu packen (z.B. beim Auslesen einer Reportdatei, die in das Excel-Format überführt werden soll).

Die Excel COM-Elemente entsprechen übrigens in der Struktur exakt der Syntax in VBA.