Word により大量文書を一括校正・校閲するPowershell サンプルスクリプト

目的

このページでは大量の html 文書を再帰的に Microsoft Word の機能により一括して校正するサンプルプログラムを紹介します。500文書とか1000文書なども可能です。
例えばPC内のあるフォルダに大量の HTML ファイルが保存されているとします。さらにサブフォルダにも保存されているとします。この HTML ファイルを一括して校正しようとしましたが有料、無料を含めて一括して校正するツールはありませんでした。理想としてはコマンドタイプで一括して校正するツールです。
そこでPowershell と Microsoft Wordの校正機能を組わせて実現しました。

仕組み

Microsoft Word には誤字脱字、スペル誤り、日本語の文法誤りなどを行う文書校正機能があります。
Powershell により指定されたフォルダ以下の html ファイルを列挙し、それぞれのhtml ファイルの中身を word に読み込ませて校正します。

文書をWord機能で一括校正するサンプル

使用するツール

このPowershell サンプルプログラムでは次の2種類のツールを利用しています。ご利用はご自分のご責任でお願いします。すばらしいツールを提供いただき、作者の方には深く感謝します。

(1)HtoX32c.exe

html ファイルからタグをすべて除去しタイトルと本文のみ抽出する便利なツールです。
【2022年3月追記】
残念ながら2022年3月現在確認したところ、ホームページがアクセスできなくなり結果として非公開となってしまいました。Vector では GUI 版と MS-DOS版(16bit)が公開されています。MS-DOS版は"このバージョンの HTOX.EXE は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認してから、ソフトウェアの発行元に問い合わせてください。"というエラーが出力されて動作しません。代替のツールを別途入手する必要があります。

(2)nkf32.exe

nkf32.exe は文字コードを扱う便利なプログラムです。本サンプルプログラムでは UTF-8 で記載された HTML ファイルを Shift-JIS に変換するために使用しています。次からダウンロードすることが可能です。https://www.vector.co.jp/download/file/win95/util/fh526847.html

nkfwin.zip をダウンロード後、次のパスに配置されている 32ビット版の nkf32.exe を使用します。

nkfwin.zip\vc2005\win32(98,Me,NT,2000,XP,Vista,7)Windows-31J\nkfwin32.exe

サンプルプログラム

サンプルプログラムは次の通りです。変数 "$SearchFolder" 以下のhtml ファイルを再帰的に Word で校正します。どのファイルにどの誤りがあるかは目視で確認し、別途手動で元ファイルを修正してください。自動では修正されません。

##################################################################
#
# サブディレクトリ含む一括文書校正スクリプト Windows 版
#
# 指定したサブディレクトリ以下の文書に対して
# 日本語の校正、文法チェック、単語スペルチェックを行う。
# 機能はMicrosoft Word の校正機能を利用する
#
# (注)一時ファイルに対して校正を行う。校正そのものは別途手動で行う必要がある。
#
# 2022年3月11日 初版作成
#
# 以下にフリーツールのインストールが必要
#
# (1)htmlからテキストのみ抽出
# C:\tools\HtoX32_cmd\HtoX32c.exe
#
# (2)テキストファイルをUTF-8やShift-JISに変換
# C:\tools\nkf\nkf32.exe
#
# Copyright(c) 2022 tooljp.com
#
##################################################################

#校正するhtmlファイルが保存されているフォルダを指定(サブディレクトリも検索される)
$SearchFolder = "C:\testdir\htmls\"

#Wordアプリを起動する
$wordapp = new-object -comObject "Word.Application"
$wordapp.Visible = $true

#校正対象の html ファイルの一覧を作成する
$itemList = Get-ChildItem $SearchFolder -Recurse -Include *.html;

foreach($textfile in $itemList)
{
#Shift-JISに変換する
&'C:\tools\nkf\nkf32.exe' -s $textfile.FullName > c:\temp3\r.txt

#htmlファイルを解析して文書のみ取り出す
&del C:\Users\username\AppData\Local\Temp\HTX_TEMP.*
&'c:\tools\HtoX32_cmd\HtoX32c.exe' c:\temp3\r.txt > c:\temp3\r2.txt

#ファイルがShift-JIS か UTF-8 か確認する
#$ret = &'C:\tools\nkf\nkf32.exe' --guess c:\temp3\r.txt

#UTF-8
<#if ($ret -eq "UTF-8 (CRLF)" -or ($ret -eq "UTF-16 (CRLF)"))
{
$encoding = "UTF8"
}
#>

#ファイルを読み込む
$encoding = "oem"
$text2 = [String]::Join("`n", (get-content -encoding ${encoding} c:\temp3\r2.txt))

#校正中の文書名を出力
write-host $textfile.FullName

#MS Wordに白紙のドキュメントを追加
$worddoc = $wordapp.Documents.Add()

#ドキュメント に文字列追加
$range = $worddoc.Content
$range.Text = $text2

#文法をチェック
$worddoc.CheckGrammar()

#文書を閉じる
$worddoc.close($false)
}

実行結果

この Powershell の実行結果です。校正中の文書はPowershell ISEに表示されます。このファイルが変更するたびにWordが立ち上がり、校正結果が表示されます。その後先ほどの校正中の文書名を確認して手動で修正してください。

複数文書の一括校正

Microsoft Word で校正、校閲されるメッセージ一覧は次の通りです。

Microsoft Word 校閲、校正メッセージ一覧



[戻る]