Hallo Reinhard,
in meinem alten Betrieb standen wir vor einigen Jahren auch vor dem
Problem. Weil die Ergebnisse etwas besser aussahen, haben wir die
Dokumente über den Umweg "durch WordPro nach .doc", dann "durch LO von
.doc nach .odt" konvertiert. Letzteres geht mit dem
Konvertierungs-Assistenten in LibreOffice ja recht einfach.
Leider habe ich den alten Code für den ersten Teil nicht mehr. Aber wenn
bei Euch WordPro noch vorhanden ist, könnte der Vorschlag von Duck.ai
hier ganz hilfreich sein:
Zuerst die WordPro-OLE-Schnittstelle prüfen:
--Anfang----- check_wordpro.ps1 -----------------
$progIds = @(
"WordPro.Application",
"Lotus.WordPro",
"SmartSuite.WordPro",
"WordPro.Application.1" )
foreach ($progId in $progIds) {
$type = [type]::GetTypeFromProgID($progId)
if ($type) { Write-Host "Gefunden: $progId" }
else { Write-Host "Nicht gefunden: $progId" }
}
--Ende----- check_wordpro.ps1 -----------------
Dann der Powershell-Code für den Export aus WordPro:
--Anfang----- Convert-LwpToDoc.ps1 -----------------
param(
[Parameter(Mandatory = $true)]
[string]$InputFolder,
[Parameter(Mandatory = $true)]
[string]$OutputFolder
)
$ErrorActionPreference = "Stop"
New-Item -ItemType Directory -Path $OutputFolder -Force | Out-Null
# Mögliche WordPro-OLE-ProgIDs testen
$progIds = @(
"WordPro.Application",
"Lotus.WordPro",
"SmartSuite.WordPro",
"WordPro.Application.1" )
$wordPro = $null
$usedProgId = $null
foreach ($progId in $progIds) {
try {
$type = [type]::GetTypeFromProgID($progId)
if ($type) {
$wordPro = [Activator]::CreateInstance($type)
$usedProgId = $progId
break
}
}
catch {
# Nächste ProgID versuchen
}
}
if ($null -eq $wordPro) {
throw @"
Kein WordPro-OLE-Server gefunden.
Die installierte Lotus-WordPro-Version stellt wahrscheinlich
keine verwendbare COM/OLE-Schnittstelle bereit. In diesem Fall
kann PowerShell WordPro nicht direkt über Methoden steuern.
"@
}
Write-Host "WordPro-OLE verwendet: $usedProgId"
try {
# Falls WordPro diese Eigenschaft unterstützt
try {
$wordPro.Visible = $false
}
catch {
# Eigenschaft ist optional
}
$files = Get-ChildItem `
-Path $InputFolder `
-Filter "*.lwp" `
-File
foreach ($file in $files) {
$name = [IO.Path]::GetFileNameWithoutExtension($file.Name)
$target = Join-Path $OutputFolder ($name + ".doc")
Write-Host "Konvertiere: $($file.Name)"
$document = $null
try {
# Mögliche WordPro-Syntax:
$document = $wordPro.Documents.Open($file.FullName)
# Zieltyp muss in WordPro möglicherweise anders
# bezeichnet werden, z. B. "MS Word 6.0".
$document.SaveAs(
$target,
"MS Word 6.0"
)
Write-Host "Erstellt: $target"
}
finally {
if ($document -ne $null) {
try {
$document.Close()
}
catch {
# Ignorieren, falls Close nicht unterstützt wird
}
[Runtime.InteropServices.Marshal]::ReleaseComObject($document) |
Out-Null
}
}
}
}
finally {
if ($wordPro -ne $null) {
try {
$wordPro.Quit()
}
catch {
# Ignorieren, falls Quit nicht unterstützt wird
}
[Runtime.InteropServices.Marshal]::ReleaseComObject($wordPro) |
Out-Null
}
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
}
--Ende----- Convert-LwpToDoc.ps1 -----------------
Aufruf mit:
powershell -File .\Convert-LwpToDoc.ps1 -InputFolder
"C:\Dokumente\LWP" -OutputFolder "C:\Dokumente\DOC"
Falls die Powershell-Execution-Policy zuschlägt:
-
https://www.delftstack.com/de/howto/powershell/run-a-powershell-script-from-a-batch-file/
-
https://www.heise.de/tipps-tricks/Windows-Powershell-Skript-ausfuehren-4672163.html
Die beiden Skripte sehen ganz nachvollziehbar aus, selbst testen kann
ich sie mangels Windows und WordPro hier bei mir jedoch leider nicht.
Vielleicht probierst Du das erst einmal mit ein paar Testdokumente aus,
um nichts kaputt zu machen ...
Viel Erfolg!
Heiko
Am 14.09.26 um 12:36 schrieb Reinhard JÄGER:
Hallo,
wir haben gesehen, dass Writer auch Lotus Wordpro Dokumente öffnen kann.
Dies klappt auch für reine Text-Dokumente.
Enthaltene Grafiken werden aber nicht dargestellt (nur blauer Rahmen).
Gibt es eine Möglichkeit auch die in .lwp Dateien enthaltenen Grafiken
anzuzeigen?
Wir möchten den Writer gerne als Konvertierungstool für alte .lwp Dateien
nutzen.
mit freundlichen Grüßen/best regards
Reinhard Jaeger
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.