Per Powershell Excel Tabellen erstellen
Hallo liebe Admins und Entwickler.
Ich habe folgendes Problem:
Ich bin gerade dabei, ein PS Script für unsere neue Domäne zu schreiben. Dort bekommt jeder User ein Benutzernamen und ein Passwort zum Einloggen. Diese Daten sollen nun in eine Excel Datei geschrieben werden. Damit man sie anschließend ausdrucken, und an die jeweiligen Personen geben kann. Lange Rede kurzer Sinn: Wir haben mehrere Kurse, mit mehreren Leuten. Aufgabe: Eine Excel Datei, mehrere Tabellen. Pro Kurs eine Tabelle. Wo nun die Login Daten reingeschrieben werden sollen. Soweit so gut. Klappt auch. BIS ich einen 2. Kurs habe und er eine neue Tabelle erstellen soll. Da stehe ich nun vor einer Wand.
Der Code:
Die Fehlermeldung:
So. Wie kann ich nun ein neues Tabellenblatt HINTER den bestehenden erstellen, wenn er bei worksheets.item() immer eine feste Zahl in den Klammern haben will?
Hoffe es ist gut beschrieben und ihr könnt mir eventuell helfen.
Danke
Ich habe folgendes Problem:
Ich bin gerade dabei, ein PS Script für unsere neue Domäne zu schreiben. Dort bekommt jeder User ein Benutzernamen und ein Passwort zum Einloggen. Diese Daten sollen nun in eine Excel Datei geschrieben werden. Damit man sie anschließend ausdrucken, und an die jeweiligen Personen geben kann. Lange Rede kurzer Sinn: Wir haben mehrere Kurse, mit mehreren Leuten. Aufgabe: Eine Excel Datei, mehrere Tabellen. Pro Kurs eine Tabelle. Wo nun die Login Daten reingeschrieben werden sollen. Soweit so gut. Klappt auch. BIS ich einen 2. Kurs habe und er eine neue Tabelle erstellen soll. Da stehe ich nun vor einer Wand.
Der Code:
} else{
Write-Host "Nope! Create new sheet..."
$sheetcount = $Workbooklogin.Worksheets.Count + 1 # Um die bisherigen Tabellenblätter zu zählen
$TabelleLogin = $workbooklogin.worksheets.item($Sheetcount) # Um das Tabellenblatt zu erstellen
$TabelleLogin.Name = "$Kurs" # Um die Tabelle umzubenennen
Ausnahme bei Abrufen von "Item": "Ungültiger Index."
In C:\Users\Administrator\....ps1: 88 Zeichen:9
+ $TabelleLogin = $workbooklogin.worksheets.item($Sheetcount)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) , GetValueInvocationException
+ FullyQualifiedErrorID : CatchFromBaseAdapterParameterizedPropertyGetValueTI
So. Wie kann ich nun ein neues Tabellenblatt HINTER den bestehenden erstellen, wenn er bei worksheets.item() immer eine feste Zahl in den Klammern haben will?
Hoffe es ist gut beschrieben und ihr könnt mir eventuell helfen.
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 281896
Url: https://administrator.de/contentid/281896
Ausgedruckt am: 14.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo 13Stift37,
hier ein Beispiel:
(Kommentare siehe Code)
Ein Export in eine CSV (export-csv) wäre aber IMHO sinnvoller als den Weg über die langsame Excel-Automatisierung zu gehen. Aber das bleibt deine Entscheidung.
Grüße Uwe
hier ein Beispiel:
(Kommentare siehe Code)
#Excel Objekt erzeugen
$objExcel = New-Object -Com Excel.Application
# Excel anzeigen
$objExcel.Visible = $true
# Workbook öffnen
$wb = $objExcel.Workbooks.Open('C:\Mappe1.xlsx')
# letztes Sheet holen
$last_ws = $wb.Worksheets.Item($wb.Worksheets.Count)
# Nullwert für nicht genutzte Excel-Funktionparameter
$n = [System.Reflection.Missing]::Value
# Neues Sheet hinter dem letzten erstellen
$new_ws = $wb.Worksheets.Add($n,$last_ws,$n,$n)
# Sheet umbenennen
$new_ws.Name = "Test"
Grüße Uwe
Hi,
warum nimmst du nicht eine csv-Datei?
Sollte doch fpr deine Ansprüche genügen und das Skript ist weniger fehleranfällig.
-> export-csv
Grüße,
Tiberius
Edit: @colinardo war mal wieder auf der Prisch anch Powershell-Themen.
warum nimmst du nicht eine csv-Datei?
Sollte doch fpr deine Ansprüche genügen und das Skript ist weniger fehleranfällig.
-> export-csv
Grüße,
Tiberius
Edit: @colinardo war mal wieder auf der Prisch anch Powershell-Themen.
Liegt leider an dir ...
Wenn du also einen Kurs hast der 23 heißt musst du Ihn in der Variablen so deklarieren:
Wohingegen
ein Integer ist. Und bei Integer-Werten nimmt Excel eben an das du den Index anstatt des Namen des Sheets angeben willst.
Noch nichts von Variablen-Debugging gehört ?
Wo ist der Fehler? :/
Ohne deinen Code wie soll ich ihn finden, du hast ganz sicher nur eine Variable vertauscht oder an der falschen Stelle deklariert.Ich denke er hat Probleme mit dem Abfragen von dem Tabellen Namen..
Du musst bei der Angabe bei Item() darauf achten das du entweder [Strings] verwendest oder [Integer], denn bei Integer Werten nimmt Excel an das du den Index des Sheets angeben willst, bei String den Name des Sheets!!!Wenn du also einen Kurs hast der 23 heißt musst du Ihn in der Variablen so deklarieren:
$kurs = "23"
$kurs = 23
Noch nichts von Variablen-Debugging gehört ?