wrdap.rbで定義されているメソッド
最終更新日: 2016/03/01
wrdap.rbは、ruby経由でMS-Wordを自動操縦するためのruby用ライブラリです。
その中には次の3種類のクラスとモジュールがあり、それぞれ各種メソッドが定義されています。
- class Wrdap: Word Applicationを扱うためのクラス
- class Wrdoc: ワードのドキュメントを扱うためのクラス
- module Wrd: 共通に用いるメソッド
以下、各々のメソッドの仕様について記します。
《目次》
- 1. class Wrdap
- (1) Wrdap.new(file1, file2, ……)
- (2) quit()
- (3) opens(file1, file2, ……)
- (4) opens_once(file1, file2, ……)
- (5) doc_open(param)
- (6) doc_close(doc)
- (7) doc_names()
- (8) display_alert(val)
- (9) each
- (10) ltpl_info(type = :string)
- (11) macro_add(str, type=nil, name=nil)
- (12) macro_code(type=nil, name=nil)
- (13) macro_export(type=nil, name=nil, opt=nil)
- (14) macro_import(filename, dup_check=false)
- (15) macro_list(type=nil, name=nil)
- (16) macro_list2(type=nil, name=nil)
- (17) macro_name(type=nil, name=nil)
- (18) macro_remove(type=nil, name=nil)
- (19) macro_run(mname, arg1, arg2, ……)
- (20) version
- (21) クラス変数 auto_close, auto_quit など
- 2. class Wrdoc
- (1) close()
- (2) save(save_name)
- (3) name()
- (4) page_setup(page_info, *sect) / 別名ps()
- (5) page_setup_info(*sect) / 別名 psi()
- (6) last_page_info() / 別名 lpi()
- (7) paragraph_adjust(adjust_str) / 別名 pa()
- (8) check_page_number(*sect) / 別名 cpn()
- (9) del_page_number(*sect) / 別名 dpn()
- (10) add_page_number(*sect) / 別名 apn()
- (11) std_font(jfont, afont, size) / 別名 sf()
- (12) get_info(sect_num)
- (13) set_info(arg, sect_num)
- (14) table_border(style, outside_style, outside_width, *tbl_nums)
- (15) table_row(align_str, *tbl_nums)
- (16) table_col(align_str, *tbl_nums)
- (17) table_ary(*tbl_nums)
- (18) table_para(*tbl_nums)
- (19) table_center(*tbl_nums)
- (20) ltpl_info(type = :string)
- (21) macro_add(str, type=nil, name=nil)
- (22) macro_code(type=nil, name=nil)
- (23) macro_export(type=nil, name=nil, opt=nil)
- (24) macro_import(filename, dup_check=false)
- (25) macro_list(type=nil, name=nil)
- (26) macro_list2(type=nil, name=nil)
- (27) macro_name(type=nil, name=nil)
- (28) macro_remove(type=nil, name=nil)
- (29) macro_run(mname, arg1, arg2, ……)
- (30) pdf_out(arg = {})
- (31) クラス変数 app, obj
- 3. module Wrd
- (1) fullpath(fname)
- (2) filename2(fname)
- (3) filename3(fname)
- (4) wd_load()
- (5) time2str(x)
- (6) to_num(x)
- (7) str2ary(str, sep, atype)
- (8) ary2str(aa, sep)
- (9) set_pandoc_path()
- (10) pandoc_convert(str, *opt)
- (11) pandoc_docx(str, *opt)
- (12) pandoc_html(str, *opt)
- (13) pandoc_tex(str, *opt)
- (14) erb_three(str)
- (15) matrix2table(data, *arg) / 別名 pipe_table()
- (16) text_table(ary, header, sep) / 別名 ascii_table()
- (17) ltpl_info(tpls, type = :string)
- (18) commento_info(str)
- (19) info()
- (20) mkd2docx(mkd_str, out_file)
1. class Wrdap
Word Applicationを扱うためのクラス
VBAにおける Word.Application に相当。
(1) Wrdap.new(file1, file2, ……)
- 機能: Wrdapオブジェクトを生成する。引数が指定された場合は、それをワード文書として開く。
- file1など: “test.doc” などのワード文書のファイル名。複数指定可能。これを指定する時はブロック付きにする。
- 戻り値: Wrdapオブジェクト。VBAでいうところの Word.Applicationに相搭するものを返す。
- 利用例: wrd = Wrdap.new
Wrdap.new(“test.doc”) {|doc| ……}
- 備考: このオブジェクトについて、アルファベット大文字で始まるメソッド名を指定すると、それが Word.Application に引き渡される。
引数(ワード文書名)を複数指定した場合、ブロックの中では1つづつを処理する形になる。複数を同時に開いて取り扱うわけではない。
ブロック付きで呼び出した時は、ブロックの処理がすべて終了した時点で Word.application が終了する。
ブロック内では、doc.app.order(処理しているワード文処が何番目か)、doc.app.last(最後のワード文書の番号)を参照できる。ここでdocは後述のWrdocオブジェクト、doc.appはWrdapオブジェクトを指す。
(2) quit()
- 機能: VBAの Word.Application を終了する。開いているワード文書がある時は、保存せずに閉じる。
- 戻り値: 不定
- 利用例: wrd.quit
- 備考: rubyプログラムが終了する時は、このquitが必ず呼び出される。エラー終了する時も同様。
(3) opens(file1, file2, ……)
- 機能: ワード文書を開く。
- file1など: ワード文書のファイル名。複数指定可能。
- 戻り値: ワードのドキュメントを扱うためのWrdocオブジェクトが収納された配列を返す。配列の要素個数は、与えた引数の個数分となる。
ただし、ブロック付きで呼び出された時は、戻り値は不定。
- 利用例: ary = wrd.opens(“test01.doc”, “test02.docx”)
wrd.opens(“test.doc”) {|doc| ……}
- 備考: 引数(ワード文書名)を複数指定した場合、ブロックの中では1つづつを処理する形になる。複数を同時に開いて取り扱うわけではない。
ブロック内では、wrd.order(処理しているワード文処が何番目か)、wrd.last(最後のワード文書の番号)を参照できる。
(4) opens_once(file1, file2, ……)
- 機能: 複数のワード文書を同時に開く。必ずブロック付きで呼び出すこと。
- file1など: ワード文書のファイル名。”test.doc” など。複数指定する。1つだけ指定した時は、opens()と同じ挙動になる。
- 戻り値: 不定
- 利用例: wrd.opens_once(“test01.doc”, “test02.docx”) {|doc1, doc2| ……}
(5) doc_open(param)
- 機能: 1つのワード文書を開く
- param: ワード文書を開く時のファイル名やオプションなど。paramがStringならファイル名とみなされる。Hashならオプションを含めた引数とみなされる。
- 戻り値: ワードのドキュメントを扱うためのWrdocオブジェクトを返す。
- 利用例: doc = wrd.doc_open(“test.doc”)
doc = wrd.doc_open(‘Filename’=>“test.docx”, ‘ReadOnly’=>true)
(6) doc_close(doc)
- 機能: 1つのワード文書を閉じる
- doc: ワード文書を指し示すWrdocオブジェクト
- 戻り値: 不定
- 利用例: wrd.doc_close(doc)
(7) doc_names()
- 機能: 開いているワード文書の名前を取得
- 戻り値: 開いているワード文書の名前(フルパスではない、拡張子を含む)を配列に入れて返す。
- 利用例: ary = wrd.doc_names()
(8) display_alert(val)
- 機能: 警告メッセージ出力を抑制するか否かを設定
- val: trueだと警告メッセージを出力する状態になり、falseだと出力しない状態になる。
- 戻り値: 設定し直す前の状態(true | false)を返す。ただし、ブロック付きで呼び出した時は不定となる。
- 利用例: before_val = wrd.display_alert(true)
wrd.display_alert(false) { …… }
- 備考: ブロック付きで呼び出した場合、引数で設定した値が何であれ、ブロックの処理が終了した時点で、元の値に戻る。
(9) each
- 機能: 既に開いてあるワード文書を1つづつ処理。必ずブロック付きで呼び出す。
- 戻り値: 不定
- 利用例: wrd.each {|doc| …… }
- 備考: ブロック内では、wrd.order(処理しているワード文処が何番目か)、wrd.last(最後のワード文書の番号)を参照できる。
(10) ltpl_info(type = :string)
- 機能: 既定の箇条書きテンプレートの情報を取得する。
- type: 出力の形式を指定。:string なら文字列を返し、それ以外であれば配列を返す。デフォルトは :string。
- 戻り値: 既定の箇条書きテンプレートに関する情報を返す。ListGalleriesに属する3種類のListTemplates(1:行頭文字形式, 2:行番号形式, 3:アウトライン形式)の総ての情報を返す。
- 利用例: str = wrd.ltpl_info()
ary = wrd.ltpl_info(:array)
目次に戻る
(11) macro_add(str, type=nil, name=nil)
- 機能: マクロのコンポーネントを標準テンプレート(NormalTemplate)に追加する。
- str: “Sub Macro1 …… Sub End” のようなマクロのソースコードを文字列で指定。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1の標準モジュールになる。
- name: “Module3” などのモジュール名。省略またはnilの場合、MS-Wordにお任せとなる。
- 戻り値: コンポーネントを示すオブジェクトを返す。この戻り値をcomponentに代入した場合、component.Type, component.Name でタイプと名前を参照できる。
- 利用例: component = wrd.macro_add(str)
wrd.macro_add(str, 1)
wrd.macro_add(str, 1, “Module5”)
(12) macro_code(type=nil, name=nil)
- 機能: 標準テンプレート(NormalTemplate)のマクロのソースコードを取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: マクロのソースコードを記録した文字列を返す。各々のモジュールの冒頭に「’ «type:Standard, name:Module1»」のような文字列が挿入される。
- 利用例: str = wrd.macro_code()
str = wrd.macro_code(1)
str = wrd.macro_code(1, “Module1”)
(13) macro_export(type=nil, name=nil, opt=nil)
- 機能: 標準テンプレート(NormalTemplate)のマクロをファイルに書き出す。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも対象となる。
- opt: trueを指定すると、書き出しファイル名に標準テンプレート名を付加する。「Normal.dot!Module1.bas」のようなファイル名になる。
- 戻り値: 出力が成功したコンポーネントのタイプと名前の組みが複数含まれる配列 [[type1, name1], [type2, name2]] のような配列を返す。
- 利用例: ary = wrd.macro_export()
ary = wrd.macro_export(1)
ary = wrd.macro_export(1, “Module1”)
- 備考: 出力ファイルの名前本体は、Module1などのモジュール名の前に Normal_ が置かれて Normal_Module1 となり、拡張子は .bas(標準モジュール), .cls(クラスモジュール), .frm(ユーザーフォーム)になる。ただし、第3引数のoptがtrueの時は、Normal_ が付加されず Normal.dot!Module1.bas などの名前になる。
(14) macro_import(filename, dup_check=false)
- 機能: マクロが記録されたファイルを読み込んで、それを標準テンプレート(NormalTemplate)に登録する。
- filename: “Module1.bas” などの、マクロが記録されたファイルの名前。
- dup_check: trueを指定すると、ワード文書内に既に同名のコンポーネントがある場合、マクロの登録を行わない。例えば、”Module1.bas” というファイル名が指定された場合、Module1というモジュール名が既にあれば、マクロを登録しない。falseの時は、そうした重複チェックを行わず登録する。重複した時のモジュール名は、MS-Wordにお任せとなる。デフォルト値は false。
- 戻り値: 読み込みによって生成されたコンポーネントのタイプと名前 [type, name] を返す。読み込みが行われなかった時は nil を返す。
- 利用例: ary = wrd.macro_import(“Module1”)
ary = wrd.macro_import(“Class1.cls”, true)
(15) macro_list(type=nil, name=nil)
- 機能: 標準テンプレート(NormalTemplate)のマクロのタイプと名前の組みを取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: タイプとモジュール名の組みを配列で返す。[[type1, name1], [type2, name2], ……] の形の配列。
- 利用例: ary = wrd.macro_list()
ary = wrd.macro_list(1)
(16) macro_list2(type=nil, name=nil)
- 機能: 標準テンプレート(NormalTemplate)のマクロのコンポーネントを取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: 指定したタイプとモジュール名に該当するコンポーネント(複数)を配列に入れて返す。
- 利用例: wrd.macro_list2().each {|component| puts component.Name}
(17) macro_name(type=nil, name=nil)
- 機能: 標準テンプレート(NormalTemplate)のマクロのプロシージャ名の一覧(Macro1, Macro2など)を取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: ハッシュを返すが、そのkeyもvalueも配列。keyは、指定したタイプとモジュール名の組(配列)であり、それに属するプロシージャ名の集まり(配列)がvalueになっている。「{[1, “Module1”]=>[“Macro1”, “Macro2”], ……}」の形のハッシュ。
- 利用例: hs = wrd.macro_name()
hs = wrd.macro_name(1)
hs = wrd.macro_name(1, “Module1”)
(18) macro_remove(type=nil, name=nil)
- 機能: 標準テンプレート(NormalTemplate)のマクロのコンポーネントを削除する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも削除の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも削除の対象となる。
- 戻り値: 削除に成功したコンポーネントのタイプとモジュール名の組み(配列)をいくつか入れた配列を返す。[[type1, name1], [type2, name2], ……] の形の配列。
- 利用例: ary = wrd.macro_remove() # すべてのコンポーネントを削除
ary = wrd.macro_remove(1) # 標準モジュールをすべて削除
ary = wrd.macro_remove(1, “Module1”) # 標準モジュール Module1 を削除
(19) macro_run(mname, arg1, arg2, ……)
- 機能: 該当のマクロを実行する。
- mname: 実行したいマクロのプロシージャ名(Macro1, Macro2など)
- arg1, arg2, ……: マクロに引き渡す引数。
- 戻り値: 不定
- 利用例: wrd.macro_run(“Normal.Module1.Macro1”)
wrd.macro_run(“Normal.Module3.Macro1”, “test.doc”)
- 備考: macro_run() の別名として run() が定義されている。
(20) version
- 機能: Wrdapのバージョン番号を取得
- 戻り値: Wrdapのバージョン番号を “1.03” のようなStringで返す。
- 利用例: p wrd.version
- 備考: ワードそのもののバージョンは wrd.obj.Version で得られる。Word2007だと12.0、Word2010なら14.0が得られる。
(21) クラス変数 auto_close, auto_quit など
Wrdapには次のようなクラス変数がある。
「wrd = Wrdap.new」とした場合、wrd.auto_quit のようにして値を参照できる。
- auto_close: 値の参照と代入が可能。ブロック形式でワード文書を開いた場合、そのブロックの1回の処理が終了した時点で文書を閉じるか否かを指定する。trueだと閉じる。falseだと閉じない。デフォルトは false。
- auto_quit: 値の参照と代入が可能。ブロック形式でワード文書を開いた場合、そのブロックの処理がすべて終了した時点で Word.Application を終了させるか否かを指定する。trueだと終了。falseだと終了しない。デフォルトは false。
- obj: 値の参照のみ可能。VBAでいうところの Word.Application を返す。
- word_version: 値の参照のみ可能。Word.Application のバージョンを返す。
- order: 値の参照のみ可能。ブロック形式でワード文書を開いた場合、該当のワード文書が何番目の文書かを返す。
- last: 値の参照のみ可能。ブロック形式でワード文書を開いた場合、処理するワード文書の総数を返す。
目次に戻る
2. class Wrdoc
ワードのドキュメント(1つのワード文書)を扱うためのクラス。
VBAにおける ActiveDocument に相当。
このWrdocオブジェクトは、先述の Wrdap.doc_open() によって生成される。ユーザーが自作スクリプト内で Wrdoc.new と記述することは、あまりないと思う。
(1) close()
- 機能: 1つのワード文書を閉じる
- 戻り値: 不定
- 利用例: doc.close
(2) save(save_name)
- 機能: 1つのワード文書を保存する
- save_name: “test.doc” のような保存ファイル名を指定する。省略するか、nilを指定すると、openした時のファイル名で保存される。
- 戻り値: 不定
- 利用例: doc.save
doc.save(“test.doc”)
(3) name()
- 機能: ワード文書の名前を取得
- 戻り値: ワード文書の名前をStringで返す。拡張子付きだが、フルパス名ではない。
- 利用例: filename = doc.name
(4) page_setup(page_info, *sect) / 別名ps()
- 機能: ワード文書の用紙サイズや行数・文字数等を設定する。
- page_info: 設定情報を記録した文字列。それが書かれたファイル名を指定してもよい。あるいは、Hash形式で指定することも可能。設定情報の記述方法については wrdap.txt を参照。
- sect: ワード文書に含まれるセクションを指定する。カンマで区切って複数指定可能。セクションのオブジェクトまたは番号を指定。指定されたセクションについてのみpage_infoの設定が行われる。指定しなければ、すべてのセクションについて設定が行われる。
- 戻り値: 設定が行われた項目(「用紙の横幅」とか「1行の文字数」など)を記録した配列を返す。
- 利用例: ary = doc.ps(info_str)
ary = doc.ps(“info.txt”, 2, 3)
(5) page_setup_info(*sect) / 別名 psi()
- 機能: ワード文書の用紙サイズや行数・文字数等のセットアップ情報を取得。
- sect: ワード文書に含まれるセクションを指定する。カンマで区切って複数指定可能。セクションのオブジェクトまたは番号を指定。指定されたセクションについてセットアップ情報を得る。指定しなければ、すべてのセクションについて情報を取得する。
- 戻り値: セットアップ情報(「用紙の横幅」とか「1行の文字数」など)の項目名とその値を記録したHashを配列に入れて返す。1つのセクションの情報が1つのHashに記録されている。
- 利用例: ary = doc.psi()
ary = doc.psi(1, 2, 3)
(6) last_page_info() / 別名 lpi()
- 機能: 総ページ数等を取得
- 戻り値: 総ページ数、最終ページ番号、最終ページの行数を記録したHashを返す。
- 利用例: hs = doc.lpi()
(7) paragraph_adjust(adjust_str) / 別名 pa()
- 機能: ワード文書中の段落の配置(中央揃え、右揃えなど)を調整する
- adjust_str: 段落と配置指示の組を記録した文字列。それが書き込まれたファイルの名前でもよい。段落と配置指示の組を複数記録する時は、組と組の間に空白行を置く。詳細は wrdap.txt を参照。
- 戻り値: どのように調整したかを記録した文字列が返される。
- 利用例: print doc.pa(adjust_str)
info_msg = doc.pa(“info_file.txt”)
- 備考: 配置指示として center, left, right, justify(両端揃え), distribute(均等割り付け), pagebreak(改ページ), no(調整しない)を指定できる。
(8) check_page_number(*sect) / 別名 cpn()
- 機能: ページのヘッダーおよびフッターにおいて、ページ番号あり | なしを確認する
- sect: 確認したいセクションのオブジェクトまたは番号。カンマで区切って複数列記できる。指定しない時は、すべてのセクションを対象に確認する。
- 戻り値: 指定された各セクションについて {‘header’=>false, ‘footer’=>true} の形式のHashを生成し、それを配列に入れて返す。trueがページ番号あり、falseが番号なし。
- 利用例: ary = doc.cpn()
ary = doc.cpn(2, 4)
(9) del_page_number(*sect) / 別名 dpn()
- 機能: ページのヘッダーおよびフッターのページ番号を消去
- sect: ページ番号を消去したいセクションのオブジェクトまたは番号。カンマで区切って複数列記できる。指定しない時は、すべてのセクションを対象に消去する。
- 戻り値: 指定された各セクションについて {‘header’=>false, ‘footer’=>true} の形式のHashを取得して、それを配列に入れて返す。ちゃんと消去されたかどうか確認するのに用いる。
- 利用例: ary = doc.dpn()
ary = doc.dpn(2, 4)
- 備考: ヘッダーとフッターに、ページ番号以外の書き込みがあると、それも消去される可能性があるので注意。
(10) add_page_number(*sect) / 別名 apn()
- 機能: ページのフッターに中央揃えの形でページ番号を付加する。ヘッダー | フッターにある既存のページ番号を消去した上で付加する。
- sect: ページ番号を付加したいセクションのオブジェクトまたは番号。カンマで区切って複数列記できる。指定しない時は、すべてのセクションを対象に付加する。
- 戻り値: 付加できた時は true, 付加に失敗した時は false を返す。既存のページ番号を消去できなかった時は false を返す。
- 利用例: res = doc.dpn()
res = doc.dpn(2, 4)
- 備考: ページ番号を付加する前に、既存のページ番号を消去する。前述の del_page_number() を内部で呼び出している。
(11) std_font(jfont, afont, size) / 別名 sf()
- 機能: 標準フォントとして、和文フォント、欧文フォント、サイズを指定する。
- jfont: 和文フォントの種類を文字列で指定する。”MS 明朝”, “MS ゴシック” など。nilを詩定すれば何もしない(現状のまま)。
- afont: 欧文フォントの種類を文字列で指定する。”Century”, “Times New Roman” など。nilを詩定すれば何もしない(現状のまま)。
- size: フォントのサイズを数値(floatまたはinteger)で指定する。10.5, 12 など。nilを詩定すれば何もしない(現状のまま)。
- 戻り値: 設定後の状態(和文・欧文・サイズの各値)を配列に入れて返す。
- 利用例: ary = doc.std_font(“MS ゴシック”, nil, 12)
ary = doc.std_font()
- 備考: 引数をすべて省略してこのメソッドを呼び出すと、現状の標準フォント情報が得られる。なお、標準フォントに関する情報は、ここで取り上げている3つ以外にもいろいろあるので、必要ならVBA風の記述で対応されたい。
(12) get_info(sect_num)
- 機能: ワード文書の情報を取得する
- sect_num: セクションの番号を指定する。指定したセクションの情報を取得することになる。これを省略すると 1が指定されたものとみなされる。
- 戻り値: 用紙のサイズ、行数や文字数、上下・左右の余白、段組数、ページ番号、標準フォントの情報、総ページ数などを文字列で返す。
- 利用例: info_str = doc.get_info()
info_str = doc.get_info(2)
- 備考: 戻る値の詳細は wrdap.txt を参照。
(13) set_info(arg, sect_num)
- 機能: ワード文書の情報を設定する。段落の中央揃え・右揃えなどの設定も行える。
- arg: 設定情報を記録したHashまたはString。あるいは、ファイル名でもよい。
- sect_num: セクションの番号を指定する。指定したセクションの情報を取得することになる。これを省略すると 1が指定されたものとみなされる。
- 戻り値: 3つの要素からなる配列を返す。1)設定した文書情報, 2)設定した中央揃えなどの情報, 3)設定後の文書情報。それらをStringで返す。ただし、情報がうまく取得できない要素は nilになる。
- 利用例: ary = doc.set_info(info_str)
ary = doc.set_info(“info.dat”, 2)
- 備考: ワード文書に関する設定を総合的に行えるようにするため、このメソッドを設けた。第1引数や戻り値に関する詳細は wrdap.txt を参照。
目次に戻る
(14) table_border(style, outside_style, outside_width, *tbl_nums)
- 機能: 表の罫線を調整する
- style: 内線の罫線の種類。デフォルトは WdLineStyleSingle(細線)。なお、線の太さは WdLineWidth050pt(0.5ポイント)となる。
- outside_style: 外枠罫線の種類。デフォルトは WdLineStyleSingle(細線)
- outside_width: 外枠罫線の太さ。デフォルトは WdLineWidth075pt(0.75ポイント)
- tbl_nums: 調整したい表の番号。カンマで区切って複数列記できる。指定しない時は、すべての表が調整される。
- 戻り値: 調整した表の個数を返す。
- 利用例: count = doc.table_border()
doc.table(border(WdLineStyleDot, nil, WdLineWidth150pt, 2, 3)
- 備考: style, outside_style, outside_width は、省略したりnilを指定すると、デフォルトの値になる。
内線の太さは、このメソッドでは変更できない。
主な罫線の種類には WdLineStyleNone:罫線なし, WdLineStyleSingle:細線, WdLineStyleDot:点線, WdLineStyleDouble:二重線がある。
罫線の太さは、WdLineWidth075pt(0.75ポイント)などだが、075のところを025, 050, 075, 100, 150, 225, 300 などにできる。
(15) table_row(align_str, *tbl_nums)
- 機能: 表の第1行目の各セルの配置を調整する
- align_str: 配置を指示するアルファベット文字列。center, left, right, justify(両端揃え), distribute(均等割り付け)のどれかを指定。
- tbl_nums: 調整したい表の番号。カンマで区切って複数列記できる。指定しない時は、すべての表が調整される。
- 戻り値: 調整した表の第1行目の情報(各セルの文字列を配列に入れたもの)を収納した配列。つまり2次元配列の形になっている。
- 利用例: ary = doc.table_row(“distribute”)
ary = doc.table_row(“center”, 2, 3, 4)
- 備考: 表の第1行目には項目名を列記する場合が多く、第2行目以降とは異なる配置にしたいことがあるので、このメソッドを設けた。
(16) table_col(align_str, *tbl_nums)
- 機能: 表の第1列目(最も左の列)の各セルの配置を調整する
- align_str: 配置を指示するアルファベット文字列。center, left, right, justify(両端揃え), distribute(均等割り付け)のどれかを指定。
- tbl_nums: 調整したい表の番号。カンマで区切って複数列記できる。指定しない時は、すべての表が調整される。
- 戻り値: 調整した表の第1列目の情報(各セルの文字列を配列に入れたもの)を収納した配列。つまり2次元配列の形になっている。
- 利用例: ary = doc.table_col(“distribute”)
ary = doc.table_col(“center”, 2, 3, 4)
- 備考: 表の第1列目には項目名を列記することがあり、第2列目以降と異なる配置にしたい場合があるので、このメソッドを設けた。
(17) table_ary(*tbl_nums)
- 機能: 各々の表を2次元配列に変換して返す
- tbl_nums: 対象とする表の番号。カンマで区切って複数列記できる。指定しない時は、すべての表が対象となる。
- 戻り値: 1つづつの表を2次元配列に変換し、それらを配列に収納して返す。つまり3次元配列になっている。配列の各要素(セル)は、すべて文字列。数値に変換可能なセルを数値にしたい時は、後述の Wrd::to_num() メソッドを用いる。
- 利用例: ary = doc.table_ary()
ary = doc.table_ary(2, 3, 4)
- 備考: ワード文書の表において、セル内の改行が \v(\x0b) になっているケースがある。これをそのままcsvに書き出した場合、Excelでそのcsvを開くと改行されない。\vを\rや\nに自前で変換する必要があるので注意されたい。
(18) table_para(*tbl_nums)
- 機能: 各々の表の段落番号(11〜20などの範囲)を返す。段落とはVBAのParagraphのこと。
- tbl_nums: 対象とする表の番号。カンマで区切って複数列記できる。指定しない時は、すべての表が対象となる。
- 戻り値: 1つづつの表について、その段落番号(最初の番号から最後の番号までの配列)を取得して、それらを配列に収納して返す。
ワード文書では、基本的に1つのセルが1つの段落になっているが、何番の段落から何番の段落までが1つの表なのかを把握したい時にこのメソッドを用いる。
戻り値が [[11, 12, 13, 14]] であれば、表の段落番号が11〜14であることが分かる。
- 利用例: ary = doc.table_para()
ary = doc.table_para(2, 3, 4)
- 備考: 表が、例えば3×3の9個のセルから構成されている場合、その表が9個の段落(Paragraph)からなるかというと、必ずしもそうではない。右側にダミーの空の列が置かれて、3×4=12個の段落になっていたりするので注意。VBA風にいうと、1つのTableのRangeに属するParagraphを確認するのが当メソッドである。
ちなみに、5番目のParagraphがTableに属しているか否かを確認したい場合、VBAでは「ActiveDocument.Paragraphs(5).Range.Information(wdWithInTable)」の値をみる。これがtrueだとTableに属しており、falseなら属していないことになる。
(19) table_center(*tbl_nums)
- 機能: 各々の表をページ内で中央揃えにする
- tbl_nums: 対象とする表の番号。カンマで区切って複数列記できる。指定しない時は、すべての表が対象となる。
- 戻り値: 中央揃えにした表について、その第1行目の情報(各セルの文字列を配列に入れたもの)を収納した配列を返す。つまり2次元配列の形になっている。
- 利用例: ary = doc.table_center()
ary = doc.table_center(2, 3)
(20) ltpl_info(type = :string)
- 機能: 作業中の文書(ActiveDocument)に帰属する箇条書きテンプレートの情報を取得する。
- type: 出力の形式を指定。:string なら文字列を返し、それ以外であれば配列を返す。デフォルトは :string。
- 戻り値: 箇条書きテンプレートに関する情報を返す。
- 利用例: str = doc.ltpl_info()
ary = doc.ltpl_info(:array)
目次に戻る
(21) macro_add(str, type=nil, name=nil)
- 機能: マクロのコンポーネントを作業中の文書(ActiveDocument)に追加する。
- str: “Sub Macro1 …… Sub End” のようなマクロのソースコードを文字列で指定。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1の標準モジュールになる。
- name: “Module3” などのモジュール名。省略またはnilの場合、MS-Wordにお任せとなる。
- 戻り値: コンポーネントを示すオブジェクトを返す。この戻り値をcomponentに代入した場合、component.Type, component.Name でタイプと名前を参照できる。
- 利用例: component = doc.macro_add(str)
doc.macro_add(str, 1)
doc.macro_add(str, 1, “Module5”)
(22) macro_code(type=nil, name=nil)
- 機能: 作業中の文書(ActiveDocument)のマクロのソースコードを取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: マクロのソースコードを記録した文字列を返す。各々のモジュールの冒頭に「’ «type:Standard, name:Module1»」のような文字列が挿入される。
- 利用例: str = doc.macro_code()
str = doc.macro_code(1)
str = doc.macro_code(1, “Module1”)
(23) macro_export(type=nil, name=nil, opt=nil)
- 機能: 作業中の文書(ActiveDocument)のマクロをファイルに書き出す。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも対象となる。
- opt: trueを指定すると、書き出しファイル名にワード文書名を付加する。「test.doc!Module1.bas」のようなファイル名になる。
- 戻り値: 出力が成功したコンポーネントのタイプと名前の組みが複数含まれる配列 [[type1, name1], [type2, name2]] のような配列を返す。
- 備考: 出力ファイルの名前本体は、Module1などのモジュール名となり、拡張子は .bas(標準モジュール), .cls(クラスモジュール), .frm(ユーザーフォーム)になる。
- 利用例: ary = doc.macro_export()
ary = doc.macro_export(1)
ary = doc.macro_export(1, “Module1”)
(24) macro_import(filename, dup_check=false)
- 機能: マクロが記録されたファイルを読み込んで、それを作業中の文書(ActiveDocument)に登録する。
- filename: “Module1.bas” などの、マクロが記録されたファイルの名前。
- dup_check: trueを指定すると、ワード文書内に既に同名のコンポーネントがある場合、マクロの登録を行わない。例えば、”Module1.bas” というファイル名が指定された場合、Module1というモジュール名が既にあれば、マクロを登録しない。falseの時は、そうした重複チェックを行わず登録する。重複した時のモジュール名は、MS-Wordにお任せとなる。デフォルト値は false。
- 戻り値: 読み込みによって生成されたコンポーネントのタイプと名前 [type, name] を返す。読み込みが行われなかった時は nil を返す。
- 利用例: ary = doc.macro_import(“Module1”)
ary = doc.macro_import(“Class1.cls”, true)
(25) macro_list(type=nil, name=nil)
- 機能: 作業中の文書(ActiveDocument)のマクロのタイプと名前の組みを取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: タイプとモジュール名の組みを配列で返す。[[type1, name1], [type2, name2], ……] の形の配列。
- 利用例: ary = doc.macro_list()
ary = doc.macro_list(1)
(26) macro_list2(type=nil, name=nil)
- 機能: 作業中の文書(ActiveDocument)のマクロのコンポーネントを取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: 指定したタイプとモジュール名に該当するコンポーネント(複数)を配列に入れて返す。
- 利用例: doc.macro_list2().each {|component| puts component.Name}
(27) macro_name(type=nil, name=nil)
- 機能: 作業中の文書(ActiveDocument)のマクロのプロシージャ名の一覧(Macro1, Macro2など)を取得する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも取得の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも取得の対象となる。
- 戻り値: ハッシュを返すが、そのkeyもvalueも配列。keyは、指定したタイプとモジュール名の組(配列)であり、それに属するプロシージャ名の集まり(配列)がvalueになっている。「{[1, “Module1”]=>[“Macro1”, “Macro2”], ……}」の形のハッシュ。
- 利用例: hs = doc.macro_name()
hs = doc.macro_name(1)
hs = doc.macro_name(1, “Module1”)
(28) macro_remove(type=nil, name=nil)
- 機能: 作業中の文書(ActiveDocument)のマクロのコンポーネントを削除する。
- type: コンポーネントのタイプ(1, 2, 3のどれか)を指定。1:標準モジュール, 2:クラスモジュール, 3:ユーザーフォーム。省略またはnilの場合は、1〜3のいずれも削除の対象となる。
- name: “Module3” などのモジュール名。省略またはnilの場合は、どのモジュールも削除の対象となる。
- 戻り値: 削除に成功したコンポーネントのタイプとモジュール名の組み(配列)をいくつか入れた配列を返す。[[type1, name1], [type2, name2], ……] の形の配列。
- 利用例: ary = doc.macro_remove() # すべてのコンポーネントを削除
ary = doc.macro_remove(1) # 標準モジュールをすべて削除
ary = doc.macro_remove(1, “Module1”) # 標準モジュール Module1 を削除
(29) macro_run(mname, arg1, arg2, ……)
- 機能: 該当のマクロを実行する。
- mname: 実行したいマクロのプロシージャ名(Macro1, Macro2など)
- arg1, arg2, ……: マクロに引き渡す引数。
- 戻り値: 不定
- 利用例: doc.macro_run(“Macro1”)
doc.macro_run(“Module1.Macro1”, “test.doc”)
- 備考: macro_run() の別名として run() が定義されている。
(30) pdf_out(arg = {})
- 機能: ActiveDocumentの内容をPDFに出力。内部でExportAsFixedFormatメソッドを呼び出す。
- arg: PDFファイルの名前、またはHashを指定。Hashの場合、足りないものを補った上でExportAsFixedFormatメソッドに引き渡される。
- 戻り値: 不定
- 利用例: doc.pdf_out(“test.pdf”)
doc.pdf_out('OptimizeFor'=>WdExportOptimizeForOnScreen)
- 備考: 引数を省略すると、ドキュメントオブジェクトの名前の拡張子を .pdf に変更したものがPDFファイルの名前になる。
(31) クラス変数 app, obj
Wrdocには次のようなクラス変数がある。
「wrd=Wrdap.new; doc=wrd.doc_open(“test.doc”)」とした場合、doc.app のようにして値を参照できる。
- app: 値の参照のみ可能。VBAでいうところの Word.Application を返す。
- obj: 値の参照のみ可能。VBAでいうところの ActiveDocument を返す。
目次に戻る
3. module Wrd
共通に用いるメソッド。
markdownの原稿からワード文書を生成するためのpandocコマンドに関連するメソッドなどが含まれる。
メソッド名に pandoc が付いているものを利用する場合は、予め pandoc.exe および rubyライブラリのpandoc-rubyをインストールしておく必要がある。pandoc-rubyは gem でインストール可能。
(1) fullpath(fname)
- 機能: 引数fnameのフルパス名を取得
- fname: ファイル名。Stringで与える。
- 戻り値: フルパス名を示すString。win32oleのScripting.FileSystemObjectを利用して得た結果。
- 利用例: p fullpath(“test.doc”) # => “C:\\usr\\test.doc”
(2) filename2(fname)
- 機能: 引数fnameのディレクトリ名とファイル名本体を分けて取得
- fname: ファイル名。Stringで与える。
- 戻り値: 指定されたファイル名のディレクトリ名、ファイル名本体の2つを配列に入れて返す。
指定されたファイル名のフルパス名を取得した上で、ディレクトリ名とファイル名本体を得る。
ディレクトリ名の末尾には ‘\’ が付加される。
- 利用例: p filename2(“test.doc”) # => [“C:\\usr\\”, “test.doc”]
(3) filename3(fname)
- 機能: 引数fnameのディレクトリ名、ファイル名、拡張子の3つを分けて取得
- fname: ファイル名。Stringで与える。
- 戻り値: 指定されたファイル名のディレクトリ名、ファイル名、拡張子の3つを配列に入れて返す。
指定されたファイル名のフルパス名を取得した上で、ディレクトリ名、ファイル名、拡張子を得る。
ディレクトリ名の末尾には ‘\’ が付加される。
- 利用例: p filename3(“test.doc”) # => [“C:\\usr\\”, “test”, “.doc”]
(4) wd_load()
- 機能: ワード関連の定数を読み込む
- 戻り値: 不定
- 利用例: wd_load()
- 備考: わざわざ当メソッドを呼び出さなくても、Wrdapオブジェクトを生成した時に、その内部処理でワード関連の定数が読み込まれる。むしろ、当メソッドを呼び出すと Word.Application の起動と終了を行うので、不用意に呼び出さないよう注意されたい。
(5) time2str(x)
- 機能: rubyのTimeオブジェクトを文字列に変換する
- x: rubyのTimeオブジェクトまたは配列。配列の場合は各要素をチェックして、Timeオブジェクトであれば文字列に変換し、それ以外なら変換しない。xは、2次元配列や3次元配列でもかまわない。
- 戻り値: 文字列または配列。引数xが配列であれば配列を返す。
- 利用例: str2 = time2str(str)
ary2 = time2str(ary)
- 備考: Timeオブジェクトを単純に文字列に変換すると、「2014-04-23 00:00:00 +0900」のような形式になるが、time2str() は、世界標準時との差を示す「+0900」を削除し、更に、「00:00:00」といった省略可能な時刻の表示も削除する。時刻が「18:57:00」のような場合は、末尾の「:00」を取り除いて「18:57」にする。
(6) to_num(x)
- 機能: rubyの文字列を数値に変換する。数値と解釈できないものは変換しない。
- x: rubyの文字列または配列。配列の場合は各要素をチェックして、数値化できる文字列であれば数値に変換し、配列であればその中身を再起的にチェック・変換する。それ以外なら変換しない。
- 戻り値: 数値または配列。引数xが配列であれば配列を返す。数値として解釈できないものは、変換せず元のままを返す。
- 利用例: num = to_num(“3.14”)
ary = to_num([“123”, “list”, “0.25”, “78.9e-04”])
- 備考: 桁区切りのカンマ記号が入っていると、意図した数値にならないので注意。予めカンマを取り除いておくのが望ましい。
”12.0” とか “45.00” などのように、小数点以下がゼロのみの場合は、float ではなく integer に変換するので注意されたい。
(7) str2ary(str, sep, atype)
- 機能: 文字列を配列に変換する。
- str: CSVやタブ区切りテキストが代入されている文字列。
- sep: フィールドセパレータ(区切り文字)。
省略またはnilの時は自動判別。省略時は nil。
自動判別の場合、第1引数のstrの中にタブコードが多く含まれていれば "\t"、カンマが多ければ "," になる。
- atype: 数値に変換可能なデータを数値に変換するか うかの指定。
:num を指定すれば数値への変換が行われる。省略時は :num。
nil など :num 以外を指定すると数値への変換は行われない。
- 戻り値: 変換結果である配列。2次元配列として返される。
- 利用例: ary = str2ary(str)
ary = str2ary(str, "\t", nil)
- 備考: 文字列から配列への変換は、rubyの標準添付ライブラリ csv を利用している。
(8) ary2str(aa, sep)
- 機能: 配列を文字列に変換する。
- aa: 1次元または2次元の配列
- sep: フィールドセパレータ。省略すると “,” が指定されたものとみなされる。
- 戻り値: 配列を変換した文字列
- 利用例: str = ary2str(aa, “\t”)
- 備考: rubyの標準添付ライブラリ csv を利用して変換する。
(9) set_pandoc_path()
- 機能: pandocのパス名をチェックして、PandocRuby.bin_pathをセットする。
- 戻り値: pandoc.exeがみつかって正しくセットできた時は true、それ以外は false を返す。
- 利用例: res = set_pandoc_path()
- 備考: pandoc.exeがホームディレクトリの下の AppData\Local\pandoc というディレクトリにあるかどうかをチェックして、あれば PandocRuby.bin_path をセットする。パスの通ったディレクトリにpandoc.exeがあるのであれば、当メソッドを呼び出す必要はない。
(10) pandoc_convert(str, *opt)
- 機能: markdownの原稿(文字列)などをpandocによってhtmlなどに変換。
- str: markdownの原稿などが代入された文字列。後述のオプションで :from の指定がない時は markdownとみなされる。
- opt: pandocに引き渡すオプション群。pandoc-rubyにそのまま引き渡す。
{:from=>:markdown, :to=>:html} が前提とされるが、もちろん :from, :to の指定があれば、それが有効になる。
- 戻り値: 変換した結果(文字列)。文字コードは utf-8 になっている。
- 利用例: html_str = pandoc_convert(mkd_str, :s)
tex_str = pandoc_convert(mkd_str, {:to=>:latex})
- 備考: 引数strの文字コードが何であれ、pandocで変換する前に、内部的にutf-8に変換される。戻り値もutf-8になっている。
オプションに :s または :standalone を指定しないと、部分的なhtmlやtexになる。ブラウザで開けない | LaTeXのコマンドで処理できないものになるので注意。
(11) pandoc_docx(str, *opt)
- 機能: markdownの原稿(文字列)をpandocによってdocx(MS-Word文書)に変換。
- str: markdownの原稿が代入された文字列。
- opt: pandocに引き渡すオプション群。pandoc-rubyにそのまま引き渡す。
- 戻り値: docxに変換した結果(文字列)。これをバイナリーモードでファイル出力すれば、ワード文書になる。
- 利用例: docx_str = pandoc_docx(mkd_str)
- 備考: 内部で pandoc_convert() を呼び出している。オプションの :s または :standalone は、指定してもしなくてもどちらでもよい。
(12) pandoc_html(str, *opt)
- 機能: markdownの原稿(文字列)をpandocによってhtmlに変換。
- str: markdownの原稿が代入された文字列。
- opt: pandocに引き渡すオプション群。pandoc-rubyにそのまま引き渡す。スタンドアロンのhtmlを生成する時は :s を指定すること。
- 戻り値: htmlに変換した結果(文字列)。文字コードは utf-8
- 利用例: html_str = pandoc_html(mkd_str)
html_str = pandoc_html(mkd_str, :s)
- 備考: 内部で pandoc_convert() を呼び出している。
(13) pandoc_tex(str, *opt)
- 機能: markdownの原稿(文字列)をpandocによってtexに変換。
- str: markdownの原稿が代入された文字列。
- opt: pandocに引き渡すオプション群。pandoc-rubyにそのまま引き渡す。スタンドアロンのtexを生成する時は :s を指定すること。
- 戻り値: texに変換した結果(文字列)。文字コードは utf-8
- 利用例: tex_str = pandoc_tex(mkd_str)
tex_str = pandoc_tex(mkd_str, :s)
- 備考: 内部で pandoc_convert() を呼び出している。
(14) erb_three(str)
- 機能: xxxなどの3文字重ねパターンをERB用に変換
- str: 3文字重ねパターンを含む文字列
- 戻り値: ERB用に変換した文字列
- 利用例: str2 = erb_three(str); str3 = ERB.new(str2).result(binding)
- 備考: markdownの原稿などに xxx とか yyy などの3文字重ねパターンがあるとき、それを次のように変換する。
<%= (!defined?(xxx) || xxx == nil) ? “xxx” : xxx %>
つまり、もし変数 xxx に 123 という値が代入されていれば、xxxが123に置換される。xxxがそもそも用いられていないか、または、値がnilならば “xxx” という文字列に置換される(実質的に置換は行われないのと同じ)。
3文字重ねパターンとして認識されるのは、xxx, yyy1, zzz_file, xxx[0] などである。正規表現パターンで示すと次のとおり。
/([a-z])\1\1(\d+|_[A-Za-z0-9]+|\[.+?\])*/
なお、引数として与えられた文字列の中の「<% …… %>」の中に3文字重ねパターンがあっても、それは置換されない。
(15) matrix2table(data, *arg) / 別名 pipe_table()
- 機能: rubyの配列あるいは文字列を縦線形式のmarkdownの表に変換
- data: 表の素材となるrubyの配列または文字列。
文字列は、CSVあるいはタブ区切りテキストが代入されたもの。または、それらが記録されたファイルの名前。
- arg: 必要に応じて次の3つを指定可能(複数指定可)。
1) markdownのtableの見出しと本体の区切り
2) tableの属性(htmlのborderなど)の指定
3) tfootを設けるための指定
- 戻り値: 文字列。縦線形式のmarkdown形式に変換されたtableを返す。
- 利用例: str = matrix2table(xx)
str = pipe_table(xx, ["--:"]*4) # 4列とも右寄せにする場合
str = matrix2table(xx, 'border="1"') # table属性の指定
str = pipe_table(xx, '========') # tfootの指定
- 備考: オプションの「2) tableの属性(htmlのborderなど)」および「3) tfoot」は、ruby用ライブラリkramdownの利用を意式したもの。ワード文書生成時には使えないので注意。kramdownは、markdown→html変換等を行うためのruby用ライブラリ。
- 機能: rubyの配列をアスキー文字の罫線付きで表に整形する。rubyライブラリの terminal-table を利用。
- ary: 表の素材となるrubyの配列
- header: これがnil以外の値だと、aryの1行目をヘッダとみなして、2行目との間にアスキー文字の罫線を挿入する。nilであれば挿入しない。’=’ を与えると ‘=’ が罫線文字になる。
- sep: これがnil以外の値だと、各々の行と行の間に横の罫線(セパレータ)を挿入する。nilであれば挿入しない。ただし、縦の罫線は常に挿入される。
- 戻り値: 文字列。表が何行かに渡って記録されている。
- 利用例: str = text_table(ary)
str = text_table(ary, 1)
str = text_table(ary, ‘=’, 1)
- 備考: マルチバイト文字がutf-8で書かれていると、1文字が3バイトになるため、表を画面表示した時にズレが生ずるかもしれない。それが気になる時は euc-jp や Shift_JIS で試されたい。
アスキー文字罫線の表は、pandocというコマンドにおいて「グリッドテーブル」として処理される。この場合、1つのセルの中に箇条書きやコードブロックなどを盛り込むことができる。この text_table() は、pandocとの組合せを意識して設けた。
(17) ltpl_info(tpls, type = :string)
- 機能: 箇条書きテンプレートの情報を取得する。
- tpls: VBAでいうところのListTemplates(テンプレートの集合体)を指定。
- type: 出力の形式を指定。:string なら文字列を返し、それ以外であれば配列を返す。デフォルトは :string。
- 戻り値: 箇条書きテンプレートに関する情報を返す。
- 利用例: str = Wrd::ltpl_info(wrd.ListGalleries(2))
ary = Wrd::ltpl_info(doc.obj.ListTemplates, :array)
(19) info()
- 機能: 指示情報等の例を返す。どのような情報があったかを確認したい時に利用。
- 戻り値: 指示情報等の例を3分類の形で返す。つまり、三つの要素からなる配列を返す。次の三つ。
- パラグラフの配置に関する情報(center, right など)
ページセットアップに関する情報(用紙の横幅、用紙の縦の長さなど)
- ページサイズに関する情報(A4, B5, ハガキなどの寸法)
利用例: pa, ps, sz = info()
ここで得られる pa, ps, sz は、いずれも文字列。
sz(ページサイズに関する情報)は指示情報ではないが、ページセットアップの情報を書くときに参考にされたい。
備考: ps(ページセットアップに関する情報)は、日本語MS-Wordの標準的な情報なので、markdownの原稿の最後に「<!-- …… -->」で囲む形で挿入すれば、MS-Wordの標準的なページサイズや文字フォントにするための指示となる。
たとえば下のようにする。
mkd_str = mkd_str + "\n<!-- #{info[1]} -->\n"
こうすると、ページサイズがA4、標準日本語フォントが「MS 明朝」、欧文フォントはCentury、フォントサイズが10.5にするとの指示になる。
(20) mkd2docx(mkd_str, out_file)
- 機能: markdownの原稿をMS-Word用の文書に変換。
- mkd_str: markdownの原稿が代入されている文字列。
- out_file: 出力ファイル名。"test.docx" など。
ファイル名の拡張子として次ぎのものを指定可能。
docx, doc, docm, odt, rtf, xml
どの拡張子も MS-Word によって保存される。
odtは Open Document、xmlは Word2003xmlを意味する。
- 戻り値: どのような調整が行われたかの報告が代入された文字列。
- 備考: この mkd2docx() では下の調整が行われる。
- パラグラフの配置に関する調整(center, right など)
- ページセットアップに関する調整(用紙の横幅、用紙の縦の長さなど)
- 表に関する調整(罫線を実線に。列名を均等割り付けに。)
- 箇条書きの行番号に関する調整(小文字ローマ数字をまる囲みの数字に。)
表の調整において「列名を均等割り付けに」というのは、表の第1行目を見出し(項目名)とみなして均等割り付けにするもの。
箇条書きの行番号については、「i.」とか「iv.」などの小文字のローマ数字を、まる囲み数字の「@」とか「C」などに変換する。
もちろん、markdownの原稿中に表がなければ表に関する調整は行われないし、箇条書きがなければ箇条書きの調整が行われない。
〜 以上 〜
Copyright (C) T. Yoshiizumi, 2013-2014 All rights reserved.
wrdapの解説ページへ
wrdapの修正履歴
トップページへ