VBA Makro mittels PowerShell ausführen
Servus Community,
mir liegen derzeit eine Vielzahl von Word-Dokumenten vor (*.doc, *docm, *docx), in denen ContentControls-Objekte verbaut sind.
Um alle Dateien zu standardisieren habe ich folgendes Makro geschrieben:
Da ich aber nicht jedes Word-Dokument mit diesem Makro händisch befüllen möchte, stelle ich mir vor, dies über ein PowerShell Skript laufen zu lassen:
Jetzt stellt sich mir die Frage, wie ich das oben benannte Makro in PowerShell genau ausführe - innerhalb der Word-Dokumente liegt es nicht vor...
Speicher ich es vorher als .vbs und source es dann oder kann ich es innerhalb des PowerShell Skripts speichern?
mir liegen derzeit eine Vielzahl von Word-Dokumenten vor (*.doc, *docm, *docx), in denen ContentControls-Objekte verbaut sind.
Um alle Dateien zu standardisieren habe ich folgendes Makro geschrieben:
Sub RunMacro()
Dim Rng As Range, CCtrl As ContentControl
For Each Rng In ActiveDocument.StoryRanges
For Each CCtrl In Rng.ContentControls
CCtrl.LockContentControl = False
CCtrl.LockContents = False
CCtrl.Delete
Next
Next
If ActiveDocument.Revisions.Count >= 1 Then
ActiveDocument.Revisions.AcceptAll
End If
End Sub
Da ich aber nicht jedes Word-Dokument mit diesem Makro händisch befüllen möchte, stelle ich mir vor, dies über ein PowerShell Skript laufen zu lassen:
$wrd = New-Object -ComObject "Word.Application"
$files = Get-ChildItem "C:\PBs\Input" -Filter "*.doc*"
foreach ($file in $files) {
$doc = $wrd.Documents.Open("C:\PBs\Input\$file")
$wrd.Run("RunMacro")
$doc.Save()
$doc.Close()
}
Jetzt stellt sich mir die Frage, wie ich das oben benannte Makro in PowerShell genau ausführe - innerhalb der Word-Dokumente liegt es nicht vor...
Speicher ich es vorher als .vbs und source es dann oder kann ich es innerhalb des PowerShell Skripts speichern?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2740715354
Url: https://administrator.de/forum/vba-makro-mittels-powershell-ausfuehren-2740715354.html
Ausgedruckt am: 06.04.2025 um 02:04 Uhr
2 Kommentare
Neuester Kommentar
Servus,
evtl. kann dir dieser Beitrag helfen, auch wenn es um Excel-Makros geht: https://www.mrexcel.com/board/threads/copy-module-to-external-workbook.3 ...
evtl. kann dir dieser Beitrag helfen, auch wenn es um Excel-Makros geht: https://www.mrexcel.com/board/threads/copy-module-to-external-workbook.3 ...
Servus,
Grüße Uwe
$folder = 'C:\PBs\Input'
$objWord = New-Object -Com Word.Application -Property @{Visible = $false;DisplayAlerts=0}
foreach($file in Get-ChildItem $folder -File -Filter *.doc*){
$doc = $objWord.Documents.Open($file.Fullname)
foreach ($story in $doc.StoryRanges){
$story.ContentControls | %{
$_.LockContentControl = $false
$_.LockContents = $false
$_.Delete()
}
}
if ($doc.Revisions.Count -gt 0){
$doc.Revisions.AcceptAll()
}
$doc.Save()
$doc.Close($true)
}
$objWord.DisplayAlerts=-1
$objWord.Quit()
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($objWord)