バッチで,Word文書の内容を読み取ろう (WSH/JScriptでWordファイルを操作する方法)
WSHからWord文書(.docファイル)の内容を読み取る。
- 段落ごとの読み取り
- 見出しごとの読み取り(特定のスタイルの段落のみを抽出)
- →見出しだけを抽出すれば,Word文書の「アウトライン」をテキスト形式で生成できる。
段落ごとの読み取り
指定したWord文書内の全文字列を,段落ごとに出力するバッチ。
var doc_file_path = "D:\\temp\\a.doc"; function log(s){ WScript.Echo( s ); } // Wordを起動する var word = WScript.CreateObject("Word.Application"); word.Visible = true; // 指定したWordファイルを開く var doc = word.Documents.Open( doc_file_path ); // 全ての段落についてループ var num_paras = doc.Paragraphs.Count; for( var i = 1; i <= num_paras; i ++ ) { // この段落内の文字列を取得 var txt_in_para = doc.Paragraphs( i ).Range.Text; // この段落に関する情報を表示 log( "[para " + i + "] " + txt_in_para ); } // ファイルを閉じる doc.Close(); // ワードを終了する word.Quit();
Wordのマクロで段落を操作する
http://stabucky.com/wp/archives/1037
見出しごとの読み取り(特定のスタイルの段落のみを抽出)
指定したWord文書内の全「見出し」(章など)を出力するバッチ。
簡易アウトライン抽出。
var doc_file_path = "D:\\temp\\a.doc"; function log(s){ WScript.Echo( s ); } // Wordを起動する var word = WScript.CreateObject("Word.Application"); word.Visible = true; // 指定したWordファイルを開く var doc = word.Documents.Open( doc_file_path ); // 全ての段落についてループ var num_paras = doc.Paragraphs.Count; for( var i = 1; i <= num_paras; i ++ ) { // この段落 var para = doc.Paragraphs( i ); // この段落のスタイル名 var style_name = "" + para.Style; // スタイル名に「見出し」という語が含まれているか if( style_name.match("見出し") ) { // この段落のrangeオブジェクト var range = para.range; // この見出しの段落番号を取得(「1章」などの文字列) var list_string = range.ListFormat.ListString; // この見出しの文字列を取得(章番号などを除いた部分) var txt_in_para = range.Text txt_in_para = txt_in_para.replace( /\r\n/g, "" ); // 改行を除去しておく // この見出しの存在するページ番号を取得 var wdActiveEndPageNumber = 3; range.Select(); var page_num = word.Selection.Information( wdActiveEndPageNumber ); // 「[3ページ][1章] はじめに」のように表示 log( "[" + page_num + "ページ][" + list_string + "] " + txt_in_para ); } } // ファイルを閉じる doc.Close(); // ワードを終了する word.Quit();
ワードのマクロで段落番号(文字も含む)取得ってできますか
http://okwave.jp/qa/q3085439.html
- Selection.Paragraphs(1).Range.ListFormat.ListString
文章の見出しの項番と見出し名を表示させたい
http://www.moug.net/faq/viewtopic.php...
- para.Range.ListFormat.ListString
ページ番号を調べる
http://questionbox.jp.msn.com/qa23712...
- Selection.Information(wdActiveEndPageNumber)
Word オートメーションを使用して文書の各セクションのページ数をカウントする方法
http://support.microsoft.com/kb/29386...
- oSec.Range.Information(3) - 1 'wdActiveEndPageNumber=3
補足
WSHからWordを自動操作する際には,Word VBAの情報も大いに役立つ。
Word VBA の入門用リンク集 (ワードマクロの,サンプルコードやリファレンス)
http://language-and-engineering.hatenablog.jp/entry/20100314/p1