# word03.rb.txt: ruby script (encoding: Windows-31J) # data03.docを書き換えて、z_word03.doc を出力 # data03.doc(業務日誌の雛形)の中の [氏名], [日付] などを置換する # 何をどう置換するかの情報は data03.txt(タブ区切りテキスト)から読み取る require "wrdap" require "exlap" filename = "z_word03.xls" if test(?e, filename) # z_word03.xlsが存在するなら削除 File.unlink(filename) end form_file = "data03.doc" # 雛形のワード文書 text_file = "data03.txt" # 置換情報を記したタブ区切りテキストファイル str = File.read(text_file) ary = Exl::str2ary(str, "\t") # 置換情報を配列に変換 success_ary = [] # 実際に置換できた文字列をこれに記録 lose_ary = [] # 置換できなかった文字列をこれに記録 wrd = Wrdap.new # Wordの起動 wrd.opens(form_file) do |doc| # 雛形文書を開く slc = doc.Application.Selection ary.each do |info| old_str, new_str = info # 置換の旧い文字列と新しい文字列 slc.Find.Text = old_str # 検索文字 slc.Find.Forward = true # 検索方向を「後ろへ」 slc.Find.MatchWholeWord = true # 照合の方法:単語単位 slc.Find.Replacement.Text = new_str # 置換文字 res = slc.Find.Execute('Replace'=>WdReplaceAll) if res == true # 実際に置換が行われた success_ary << "#{old_str} → #{new_str}" else # 検索文字がみつからなかった lose_ary << old_str end end doc.save filename # 置換した結果たる文書の保存 end # ここでドキュメントが閉じられる wrd.quit # ワードの終了 if success_ary.size > 0 puts "* 置換された文字列" puts success_ary printf("\n") end if lose_ary.size > 0 puts "* 置換されなかった文字列" puts lose_ary printf("\n") end