pixel24
Goto Top

Alte Office (2003) im Stapelbetrieb zu 2016 konvertieren

Hallo zusammen,

wir hatten hier lange Zeit Office 2003 im Einsatz. Dann zunächst neue PC's mit Office 2016 eingerichtet und nun final alle auf diese neue Version umgestellt. Nun haben wir im Netzwerk ein bunt gemischtes Dateiformat. Die meisten Dokumente sind Office 2003 und einige schon im neuen Format.

Gibt es einen Stapelkonverter mit dem Ich alle alten Dokumente auf das neue Format bekomme oder wie löst man so etwas?

Viele Grüße
pixel24

Content-Key: 367912

Url: https://administrator.de/contentid/367912

Printed on: April 18, 2024 at 23:04 o'clock

Member: colinardo
colinardo Mar 13, 2018 updated at 14:15:49 (UTC)
Goto Top
Servus @pixel24 .
Bitte ab und zu unsere Suche benutzen, die Frage kommt pro Woche drei vier mal, ein Skript dazu habe ich vor kurzem hier gepostet
Doc Dokumente leicht in .docx umwandeln

Grüße Uwe
Member: pixel24
pixel24 Mar 13, 2018 at 15:03:39 (UTC)
Goto Top
Ja, habe nach "office stapekonvertierung" gesucht aber nichts gefunden. Ja, habe aber auch nur die ersten 10 angeschaut. Eine Frage zum Skript da ich mich damit nicht auskenne.

Wäre dies auch so zu modifizieren dass das neue konvertierte Dokument einfach an gleicher Stelle liegt wie das alte?

Hintergrund ist der. Im Projekt-Verzeichnis haben wir unseren ganze Projekte organisiert. Das sind PDF-Dokumente, CAD-Dateien, GAEB-Dateien und eben Office-Dokumente.

Wenn ist das richtig verstanden habe liegt bei dem Skript nachher ja alles in einem neuen Unterbaum und ich müsste es von dort zurück in die Projekt-Struktur verschieben.

Das wäre extrem aufwendig.

Viele Grüße
pixel24
Member: BassFishFox
BassFishFox Mar 13, 2018 updated at 16:36:37 (UTC)
Goto Top
Hallo,

Ja, habe nach "office stapekonvertierung" gesucht aber nichts gefunden.

Schon klar das da nix gefunden wird, oder?

Wenn ist das richtig verstanden habe liegt bei dem Skript nachher ja alles in einem neuen Unterbaum und ich
müsste es von dort zurück in die Projekt-Struktur verschieben.
Das wäre extrem aufwendig.

Warum ist das aufwaendig? Einfach die entstandene Ordnerunterstruktur mit der Maus in die vorhandene Struktur reinziehen geht nicht?
Ich wuerde eher sowieso alles in einer neuen Struktur unter bringen bzw. die ollen Office-Dateien gleich noch loeschen, damit die Nutzer nicht noch die ollen Dateien bearbeiten.

BFF
Member: colinardo
colinardo Mar 13, 2018, updated at Mar 23, 2018 at 09:20:05 (UTC)
Goto Top
Zitat von @pixel24:
Wäre dies auch so zu modifizieren dass das neue konvertierte Dokument einfach an gleicher Stelle liegt wie das alte?
Kein Problem.

Wenn ist das richtig verstanden habe liegt bei dem Skript nachher ja alles in einem neuen Unterbaum und ich müsste es von dort zurück in die Projekt-Struktur verschieben.
Richtig.
Das wäre extrem aufwendig.
?? hä, einfach auf den alten Baum drauf ziehen, dann werden sie an der richtigen Stelle einsortiert, ein Kinderspiel face-smile.

Bei Bedarf passe ich dir aber auch das Skript an deine Bedürfnisse an. => PN

-edit das hier speichert die Dokumente direkt an der gleichen Stelle und entfernt die alten Dokumente gleichzeitig:

Aufrufen mit
.\OfficeDocumentConverter.ps1 "C:\Daten"
<# 
    Office Document-Format Converter
#>

param(
    [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$foldersource
)

if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}  

# ==== GLOBAL VARS ====
$valid_extensions = '*.xls','*.xlt','*.doc','*.dot','*.ppt','*.pot','*.pps'  
$mpar = [System.Reflection.Missing]::Value
# =====================

# enum all office files in source with recursive search
$files = gci $foldersource -Recurse -Force -File -Include $valid_extensions
$files_excel = $files | ?{$_.Extension -match '\.(xls|xlt)$'}  
$files_word = $files | ?{$_.Extension -match '\.(doc|dot)$'}  
$files_powerpoint = $files | ?{$_.Extension -match '\.(ppt|pot|pps)$'}  

# ====== EXCEL ========

if ($files_excel){
    write-host "Processing EXCEL Workbooks:" -F White -B Green  
    
    # Prepare Excel for conversion
    $xl = New-Object -Com Excel.Application
    $xl.DisplayAlerts = $false
    $xl.Screenupdating = $false
    $xl.Visible = $false
    $remove = @()
    
    # For each file
    foreach($file in $files_excel){
        write-host "Converting '$($file.Fullname)' ... " -NoNewline -F Green  
        try{
            $wb = $xl.Workbooks.Open($file.Fullname,$false,$true)
            # file has macroproject ?
            $macroproject = $wb.HasVBProject
            $targetformat = '.xlsx'  
            $format = 51
            # determine file extension and set format number
            switch($file.Extension){
                '.xls' {  
                    $targetformat = @{$true='.xlsm';$false='.xlsx'}[$macroproject]  
                    $format = @{$true=52;$false=51}[($targetformat -like '*m')]  
                }
                '.xlt' {  
                    $targetformat = @{$true='.xltm';$false='.xltx'}[$macroproject]  
                    $format = @{$true=53;$false=54}[($targetformat -like '*tm')]  
                }
            }
            # new filename
            $targetfile = Join-Path $file.Directory.Fullname
 ($file.Basename + $targetformat)
                    
            # Save file as new format
            $wb.SaveAs($targetfile,$format) | out-null
            if (Test-Path $targetfile){write-host 'OK.' -F Green}  
	    $remove += $file
        }catch{
            # Error occured
            write-error "Error converting file '$($file.Fullname)': $($_.Exception.Message)"  
        }finally{
            # close workbook
            if ($wb){$wb.Close($false) | out-null}
        }
    }
    # Quit Excel and tidy up
    $xl.DisplayAlerts = $true
    $xl.Screenupdating = $true
    $xl.Quit() | out-null
    [System.Runtime.InteropServices.Marshal]::ReleaseComObject($xl) | out-null
    $remove | remove-item -Force
}

# ====== WORD ========

if ($files_word){
    write-host "Processing WORD documents:" -F White -B Green  
    # Prepare Word for conversion
    $word = New-Object -Com Word.Application
    $word.DisplayAlerts = 0
    $word.Screenupdating = $false
    $word.Visible = $false
    # Array which hold files to delete afterwards
    $remove = @()

    # For each file
    foreach($file in $files_word){
        write-host "Converting '$($file.Fullname)' ... " -NoNewline -F Green  
        try{
            $doc = $word.Documents.Open($file.Fullname,$false,$true)
            # file has macroproject ?
            $macroproject = $doc.HasVBProject
            $targetformat = '.docx'  
            $format = 12
            # determine file extension and set format number
            switch($file.Extension){
                '.doc' {  
                    $targetformat = @{$true='.docm';$false='.docx'}[$macroproject]  
                    $format = @{$true=13;$false=12}[($targetformat -like '*m')]  
                }
                '.dot' {  
                    $targetformat = @{$true='.dotm';$false='.dotx'}[$macroproject]  
                    $format = @{$true=15;$false=14}[($targetformat -like '*tm')]  
                }
            }
            # new filename
            $targetfile = Join-Path $file.Directory.Fullname
 ($file.Basename + $targetformat)
                    
            # Save file as new format
            $doc.SaveAs2([ref][system.object]$targetfile,[ref]$format)
            if (Test-Path $targetfile){write-host 'OK.' -F Green}  
	    $remove += $file
        }catch{
            # Error occured
            write-error "Error converting file '$($file.Fullname)': $($_.Exception.Message)"  
        }finally{
            # close document
            if ($doc -ne $null){$doc.Close($false)}
        }
    }
    # Quit Word and tidy up
    $word.DisplayAlerts = -1
    $word.Screenupdating = $true
    $word.Quit() | out-null
    [System.Runtime.InteropServices.Marshal]::ReleaseComObject($word) | out-null
    $remove | remove-item -Force
}

# ====== POWERPOINT ========

if ($files_powerpoint){
    write-host "Processing POWERPOINT presentations:" -F White -B Green  
    # Prepare Word for conversion
    $pp = New-Object -Com Powerpoint.Application
    $pp.DisplayAlerts = 1
    $remove = @()
    
    # For each file
    foreach($file in $files_powerpoint){
        write-host "Converting '$($file.Fullname)' ... " -NoNewline -F Green  
        
        try{
            $presentation = $pp.Presentations.Open($file.Fullname,$true,$mpar,0)
            # file has macroproject ?
            $macroproject = $presentation.HasVBProject
            $targetformat = '.pptx'  
            $format = 12
            # determine file extension and set format number
            switch($file.Extension){
                '.ppt' {  
                    $targetformat = @{$true='.pptm';$false='.pptx'}[$macroproject]  
                    $format = @{$true=25;$false=24}[($targetformat -like '*m')]  
                }
                '.pot' {  
                    $targetformat = @{$true='.potm';$false='.potx'}[$macroproject]  
                    $format = @{$true=27;$false=26}[($targetformat -like '*tm')]  
                }
                '.pps' {  
                    $targetformat = @{$true='.ppsm';$false='.ppsx'}[$macroproject]  
                    $format = @{$true=29;$false=28}[($targetformat -like '*sm')]  
                }
            }
            # new filename
            $targetfile = Join-Path $file.Directory.Fullname
 ($file.Basename + $targetformat)
                    
            # Save file as new format
            $presentation.SaveAs([ref][system.object]$targetfile,[ref]$format)
            if (Test-Path $targetfile){write-host 'OK.' -F Green}  
	    $remove += $file
        }catch{
            # Error occured
            write-error "Error converting file '$($file.Fullname)': $($_.Exception.Message)"  
        }finally{
            # close presentation
            if ($presentation){$presentation.Close() | out-null}
        }
    }
    # Quit Powerpoint and tidy up
    $pp.DisplayAlerts = 2
    $pp.Quit() | out-null
    [System.Runtime.InteropServices.Marshal]::ReleaseComObject($pp) | out-null
    $remove | remove-item -Force
}
Member: pixel24
pixel24 Mar 22, 2018 at 14:48:40 (UTC)
Goto Top
Danke für die Infos ... Ich komme leider erst übernächstes Wochenende dazu es zu testen. Ich werde berichten!