1 votes

Convertir des fichiers Word DOCX en fichiers Modèle DOTX sans les ouvrir un par un

J'ai une charge de formulaires au format Word DOCX que je veux convertir en modèles. Autrefois, je pouvais renommer un .DOC en .DOT et cela suffisait pour changer le fichier en un modèle, mais cela ne fonctionne pas pour les nouveaux formats .DOCX -> .DOTX.

Je sais que je peux ouvrir chaque fichier et le réenregistrer en .DOTX mais je ne veux pas devoir le faire manuellement pour chaque fichier.

Quel est le moyen le plus simple de "convertir" un DOCX en un modèle DOTX ?

3voto

harrymc Points 394411

Il fut un temps où les fichiers de document et les fichiers de modèle étaient identiques à l'exception de l'extension de fichier, mais ce n'est plus le cas. Aujourd'hui, cela nécessite soit l'utilisation d'un produit dédié, d'un convertisseur en ligne ou d'écrire le vôtre.

Voici quelques scripts (non testés). Ils nécessitent que tous les fichiers .docx soient à l'intérieur d'un dossier, et ils utilisent finalement Word pour la conversion.

De l'article Converting Word document format with PowerShell, j'ai adapté ce script PowerShell, avec l'aide de cette réponse:

$wdTypes = Add-Type -AssemblyName 'Microsoft.Office.Interop.Word' -Passthru
$wdSaveFormat = $wdTypes | Where {$_.Name -eq "wdSaveFormat"}

$path = "c:\path-to-files\" 
$word_app = New-Object -ComObject Word.Application

$Format = [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatXMLTemplate

Get-ChildItem -Path $path -Filter *.docx | ForEach-Object {
    $document = $word_app.Documents.Open($_.FullName)
    $dotx_filename = "$($_.DirectoryName)\$($_.BaseName).dotx"
    $document.SaveAs([ref] $dotx_filename, [ref]$Format)
    $document.Close()
}
$word_app.Quit()

Dans le post Quickly convert .docx files in a folder to .dotx format, j'ai trouvé cette macro VBA:

Sub DOCX_To_DOTX()
Application.ScreenUpdating = False
Dim strFolder As String, strFile As String, wdDoc As Document
strFolder = GetFolder
If strFolder = "" Then Exit Sub
strFile = Dir(strFolder & "\*.docx", vbNormal)
While strFile <> ""
  Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False)
  wdDoc.SaveAs2 FileName:=strFolder & "\" & Split(strFile, ".docx")(0) & ".dotx", Fileformat:=wdFormatXMLTemplate, AddToRecentFiles:=False
  wdDoc.Close
  'Kill strFolder & "\" & strFile
  DoEvents
  strFile = Dir()
Wend
Set wdDoc = Nothing
Application.ScreenUpdating = True
End Sub

Function GetFolder() As String
Dim oFolder As Object
GetFolder = ""
Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choisir un dossier", 0)
If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path
Set oFolder = Nothing
End Function

Je n'ai pas testé les scripts ci-dessus, donc je suggère de les laisser travailler sur une copie du dossier contenant les fichiers .docx et non sur les originaux.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X