Word文書ファイルのバージョンを一括更新

読者
読者
docファイルをdocxファイルに変換したい。
複数あるので、一括で変換する方法が無いですか?
あるよ!
Powershellを使うんだ。
管理人
管理人

PowerShellのコードイメージ
※変換元のファイルはリネームして、先頭に”_”(アンダーバーをつける)

# 事前準備
Add-Type -AssemblyName Microsoft.Office.Interop.Word
$fileType = “*doc”
$extensionDoc = “.doc”
$extensionDocx = “.docx”
$namehead = “_”

$word = New-Object -ComObject Word.Application

# ファイルの一覧取得
$files = Get-ChildItem -Path “C:\temp\sample” -Include $fileType -Recurse

Write-Host “Word変換処理開始”
Write-Host “変換元ファイルは、リネームして、ファイル名の先頭にアンダーバーをつける”

try {

# 1ファイルずつ処理
foreach($file in $files)
{
# フォルダ取得
$filePath = [System.IO.Path]::GetDirectoryName($file.FullName)
# 拡張子を含まないファイル名取得
$fileName = [System.IO.Path]::GetFileNameWithoutExtension($file)
# docファイルを保存するパスを作成
$wordPath = (Join-Path $filePath $fileName) + $extension

# Wordの処理開始
$word.Visible = $False

$doc = $word.Documents.Open($file.fullname)

$wordPath = (Join-Path $filePath $fileName) + $extensionDocx

$doc.SaveAs2($wordPath,16)

$doc.close($false)

# 変換元ファイルをリネーム
$newFileName = $namehead + $fileName + $extensionDoc

Rename-Item -Path $file -NewName $newFileName

# 終了フラグ取得
$isSucess = $?

} catch [Exception] {
Write-Host “エラーが発生しました。”
Write-Host “↓↓↓エラー詳細↓↓↓”
$error[0] | Out-String | Write-Host

} finally {
Write-Host “プログラムを終了します…”
# Excelを閉じる
if ($word -ne $null) {
$word.Quit()
}
}

Write-Host “処理完了”

SNSでもご購読できます。

最近の投稿

コメントを残す

*