ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

リッチテキスト(RTFファイル)をWordの拡張子(doc)に変換するコマンド

サーバで作業をしていて画面のハードコピーを保存しようとすると、Office製品などが入っていないので、リッチテキストにして保存するケースがあるかもしれません。しかし、リッチテキストは便利な反面、注意が必要で、データサイズがWordなどに比べて比較にならないくらい重くなります。

 

例えば、数十キロバイトのサイズがリッチテキストだと数十メガバイトになるなんてこともあり、そのままファイルサーバーなどに格納すると、データ領域を圧迫してしまうことにもなります。

 

そこで、すでにあるリッチテキスト(RTFファイル)をWordの拡張子(doc)に変換するコマンドがあるのですが、参考になる情報があるので紹介します。

 

Hey, Scripting Guy! 1,000 個の .RTF ファイルを Word 文書に変換する方法はありますか

https://gallery.technet.microsoft.com/office/87f232df-1b66-4e59-8180-da3f7b950282

 

以下は抜粋です。

 

1,000 個の .RTF ファイルを Word 文書に変換する方法はありますかQ Scripting Guy さん、よろしくお願いします。フォルダに約 1,000 個の .RTF ファイルがあります。これらすべてのファイルを Word 文書 (.DOC ファイル) に変換する必要があるのですが、どうすればよいでしょうか。
-- LS
A LS さん、こんにちは。そうですね、もちろん方法はあります。今回はお教えしませんが、必要ならばお教えできます。
すみません、待ってください。戻ってきてください。今のはほんの冗談です。私たちの知っている方法を今からご説明します。その証拠に、1 つの .RTF ファイル (C:\Scripts\Test.rtf) を開き、その文書の Word バージョンを作成するスクリプトをお見せします。

 

Visual BasicConst wdFormatDocument = 0  Set objWord = CreateObject("Word.Application") Set objDoc = objWord.Documents.Open("c:\scripts\test.rtf") objDoc.SaveAs "C:\Scripts\test.doc", wdFormatDocument  objWord.Quit 

 

上記のスクリプトを作成し、実際に実行するとwordに変換することができます。続いてファイルが多い場合のスクリプト

 

Const wdFormatDocument = 0

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='C:\Scripts'} Where " _
& "ResultClass = CIM_DataFile")

Set objWord = CreateObject("Word.Application")

For Each objFile in colFiles
If objFile.Extension = "rtf" Then
strFile = "C:\Scripts\" & objFile.FileName & "." & objFile.Extension
strNewFile = "C:\Scripts\" & objFile.FileName & ".doc"
Set objDoc = objWord.Documents.Open(strFile)
objDoc.SaveAs strNewFile, wdFormatDocument
objDoc.Close
End If
Next

objWord.Quit

 

と、あんまり自分で構文を考えずに使えますので、便利ですが、これ、新しいwordの拡張子にならないので、注意してください。古い形式のwordで保存されますが、問題なければそのまま使用できます。新しいwordの形式にするには、別途、違うやり方を考える必要があります。以前、別のスクリプトを調査していたのですが、それについては別途、時間があるときに紹介したいと思います。