Hallo
ich habe einen Excel-File mit verschiedenen Arbeitsblätter, deren Inhalt mit einem einzigen Makro regelmäßig aktualisiert wird.
Der Benutzer muss nacheinander jedes Arbeitsblatt anklicken und das Makro auszuführen. Das Makro fragt bei jedem Arbeitsblatt nach der entsprechenden CSV-Datei, das manuell ausgewählt werden muss. Die Auswahl der CSV-Datei muss
bei jedem Arbeitsblatt bestätigt werden.
Ich will folgendes machen:
- den Namen der Arbeitsblätter aus einem csv-file auslesen
- Arbeitsblatt mit dem Namen "Firma1" aktivieren bzw. auswählen -> Macro starten -> Makro fragt nach Datei mit dem Namen "Firma1.csv" -> Macro meldet anschließend Arbeitsblatt mit dem Namen "Firma1" wurde aktualisiert.
- Arbeitsblatt mit dem Namen "Firma2" aktivieren bzw. auswählen -> Macro starten -> Makro fragt nach Datei mit dem Namen "Firma2.csv" -> Macro meldet anschließend Arbeitsblatt mit dem Namen "Firma2" wurde aktualisiert.
- Arbeitsblatt mit dem Namen "Firma3" aktivieren bzw. auswählen -> Macro starten -> Makro fragt nach Datei mit dem Namen "Firma3.csv" -> Macro meldet anschließend Arbeitsblatt mit dem Namen "Firma3" wurde aktualisiert.. Etc ...
## Abfrage welche Datei ausgewählt wird
## ideal wäre Wenn
# worksheetname company1 = buchhaltung-company1.csv
# worksheetname company2 = buchhaltung-company2.csv
# worksheetname company3 = buchhaltung-company3.csv
# dann Makro ausführen
Wäre toll wenn ich hier Unterstützung bekäme ;-)
Danke
Mein Skript-Entwurf
# Open Excel file
$excel = new-object -comobject excel.application
$filePath = "u:\Test_CompanyAccouting.xlsm"
$workbook = $excel.Workbooks.Open($FilePath)
$excel.Visible = $true
# Get Names of existing Worksheets
$worksheets = Get-ChildItem -Path u:\List_WorksheetsNames.csv | ForEach-Object {$_.name}
forEach ($Worksheet in $Worksheets)
{
$WS = $Workbook.Worksheets.Item($Worksheet)
$WS.Activate()
$excel.Run("MacroAccounting")
}
$workbook.save()
$workbook.close()
$excel.quit()
Write-Host "Closed Excel"