blueeyedmonster
Goto Top

Powershell - Bestimmte Daten aus Excel in neue Excel-Dateien in letzter freien Zeile schreiben und speichern

Hallo zusammen,

ich stocke bei folgender Aufgabe.
Ich habe eine Textdatei welche ich per Powershell in eine vorhandenes Excel-Sheet in der letzten freien Zeile anzuhängen und wieder zu speichern

Folgender Schnipsel mach es schon sehr gut, aber die Zelle A2 ist halt konstant.

#Define locations and delimiter
$csv = "C:\Users\Hannes\Desktop\200319_10000_ProjektDaten_TXT_Datei" +".csv" #Location of the source file  
$xlsx = "C:\Users\Hannes\Desktop\CSV_TEST\Logs\Projektliste_Gesamt_Neu" +".xlsx" #Desired location of output  
$delimiter = ";" #Specify the delimiter used in the file  

# Create a new Excel workbook with one empty sheet
$excel = New-Object -ComObject excel.application 
#$workbook = $excel.Workbooks.Add(1)
$workbook = $excel.Workbooks.open($xlsx)
$worksheet = $workbook.worksheets.Item(1)

# Build the QueryTables.Add command and reformat the data
$TxtConnector = ("TEXT;" + $csv)  
$Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A2"))  
$query = $worksheet.QueryTables.item($Connector.name)
$query.TextFileOtherDelimiter = $delimiter
$query.TextFileParseType  = 1
$query.TextFileColumnDataTypes = ,1 * $worksheet.Cells.Columns.Count
$query.AdjustColumnWidth = 1

# Execute & delete the import query
$query.Refresh()
$query.Delete()

# Save & close the Workbook as XLSX.
$excel.DisplayAlerts = $False
$Workbook.SaveAs($xlsx,51)
$excel.Quit()

Kann mir da jemand vielleicht weiterhelfen?
Bin kompletter Newbie?

Content-ID: 559029

Url: https://administrator.de/forum/powershell-bestimmte-daten-aus-excel-in-neue-excel-dateien-in-letzter-freien-zeile-schreiben-und-speichern-559029.html

Ausgedruckt am: 22.04.2025 um 14:04 Uhr

erikro
erikro 19.03.2020 aktualisiert um 21:46:18 Uhr
Goto Top
Moin,

Zitat von @blueeyedmonster:
Kann mir da jemand vielleicht weiterhelfen?
Bin kompletter Newbie?

Lüch mich nich an! face-wink Das sieht doch schon ganz ordentlich aus. Wenn Du jetzt noch bitte auf "Bearbeiten" unter "Mehr..." klickst und < code> und < /code> vor und nach Deinem Code einfügst, wäre es schon fast perfekt. face-wink

Was Du brauchst, ist die Eigenschaft usedrange. Auf die Schnelle habe ich nichts für Powershell gefunden. Aber die Seite sollte weiterhelfen. Guck Dir halt die Zeilen mit dem Zugriff auf die Eigenschaft an.
https://www.wallstreetmojo.com/vba-usedrange/

<edit>Mir ist gerade aufgefallen, dass da beim Rausfahren der Maus einmal eine Werbung aufgeht. Ist aber trotzdem gut erklärt. Sorry dafür.</edit>

hth

Erik
blueeyedmonster
blueeyedmonster 19.03.2020 um 21:45:57 Uhr
Goto Top
Hi Erik,

danke für deinen Hinweis face-smile
Ich habe diesen Script leider nur wo gefunden und für mich angepasst. Werde mir aber deine Seite mal ansehen.
Ist den Powershell gleich mit VBA?

VG
Patrick
erikro
erikro 19.03.2020 aktualisiert um 22:07:36 Uhr
Goto Top
Zitat von @blueeyedmonster:
Ich habe diesen Script leider nur wo gefunden und für mich angepasst. Werde mir aber deine Seite mal ansehen.

Achso.

Ist den Powershell gleich mit VBA?

Der Zugriff auf Objekteigenschaften und Methoden ja. In Deinem Code (danke für die Tags) ist
$worksheet
das Objekt der Tabelle, die Du bearbeiten willst. Diese Tabelle hat Eigenschaften. Eine davon ist
$worksheet.usedrange
Diese Eigenschaft umfasst alle benutzten Zellen. Die Eigenschaft hat Untereigenschaften. Eine davon ist
$worksheet.usedrange.rows
Das sind alle benutzten Zeilen.
$worksheet.usedrange.rows.count
Ist die Anzahl aller benutzen Zeilen. Und
$worksheet.usedrange.rows.count + 1
ist dann die erste freie Zeile.

So funktioniert das Prinzip. Das Objekt bzw. genauer die Objekteigenschaften haben aber noch sehr interessante Methoden. Es lohnt sich also, das durchzulesen. face-wink

hth

Erik