大量の一太郎ファイルをWordに変換しなければならなくなった。
過去に一度やったのだが、そのときは「もうこんなことは二度とあるまい」と思ってメモも何も残さなかった。
二度あることは三度ある、というわけで今回はメモを残す。
前提として、作業を行うPCに一太郎とWordがインストールされている必要がある。
手元にあった古い一太郎はdocにしか変換できなかったので、一太郎(jtd)→旧Word(doc)→Word(docx)という手順で変換する。
jtd → doc
一太郎を起動して Ctrl + ] で、「一太郎プロンプト」を起動する。以下のコマンドを入れてEnterで一括変換できる。
fl("C:\input_folder\*.jtd", "C:\output_folder\*.doc")
注意点
- 階層になったフォルダを再帰的に変換することはできないので、変換したいファイルはフォルダの同階層にまとめて入れておく必要がある。
- ファイル名に拡張子以外の「.(ピリオド)」があると変換が途中で止まる。
「総会資料.20220101.jtd」みたいなファイルは変換できない。
↓エラーになるファイル名を探す自分用phpコード
$ls = glob('ichitaro/files/*'); foreach ($ls as $key => $value) { $noext = substr($value, 0, strrpos($value, '.')); if (strpos($noext, '.') !== false) { echo $value . PHP_EOL; } }
一太郎の文書をWord形式に一括変換する方法~一太郎プロンプト | 元「なんでもエンジニ屋」のダメ日記
一太郎ファイルをWordへ一括変換を行う場合は、一太郎プロンプトを使うと便利です。
一太郎Web:一太郎プロンプト講座
doc → docx
そのものズバリなVBScriptが公開されていたので、ありがたく使わせてもらいました。
【Word】「.doc」を「.docx」に「互換モード」を無効にして一括変換する方法【Windows】
今回はWindowsで「.doc」を「.docx」に「互換モード」を無効にしつつ一括変換する方法のご紹介です。肉玉にゃんこVBScriptを使いますにゃ〜ダウンロードしてダブルクリックするだけで使えますにゃ〜「互換モード」をキープしたままで
↑のページからDLしたもの解凍し、中のVBScriptを、「.docx」形式に変換したい「.doc」ファイルがあるフォルダに入れてダブルクリックでOK。
一応、以下にもVBScriptを転載しておく。
14行目の頭の「'」を取ると、処理が終わったファイルを削除する動作になる
Option Explicit Dim dc, f, gf, so, wd Set so = CreateObject("Scripting.FileSystemObject") Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName)) Set wd = CreateObject("Word.Application") wd.Application.DisplayAlerts = False wd.Visible = False For Each f In gf.Files If LCase(so.GetExtensionName(f.Name)) = "doc" Then Set dc = wd.Documents.Open(gf & "\" & f.Name) dc.SaveAs2 gf & "\" & so.GetBaseName(f.Name) & ".docx", 16, , , , , , , , , , , , , , , 65535 dc.Close Set dc = Nothing 'so.DeleteFile gf & "\" & f.Name, True End If Next wd.Quit Set wd = Nothing Set gf = Nothing Set so = Nothing MsgBox("Finished!")
Option Explicit Dim dc, f, gf, so, wd Set so = CreateObject("Scripting.FileSystemObject") Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName)) Set wd = CreateObject("Word.Application") wd.Application.DisplayAlerts = False wd.Visible = False For Each f In gf.Files If LCase(so.GetExtensionName(f.Name)) = "doc" Then Set dc = wd.Documents.Open(gf & "\" & f.Name) dc.SaveAs2 gf & "\" & so.GetBaseName(f.Name) & ".docx", 16 dc.Close Set dc = Nothing 'so.DeleteFile gf & "\" & f.Name, True End If Next wd.Quit Set wd = Nothing Set gf = Nothing Set so = Nothing MsgBox("Finished!")
コメント