# Word_to_Excel.rb.txt: ruby script (encoding: Windows-31J) # ワード文書の表をすべてExcelに書き出す。クリップボードを利用。 # カレントフォルダの *.doc, *.docx, *.docm などを対象に処理する # word_test.doc の表は word_test.doc.xls に書き出される require "exlap" require "wrdap" wrd = Wrdap.new # Wordの起動 sleep(0.2) xl = Exlap.new # Excelの起動 xl.CutCopyMode = false # クリップボードのcopy,pasteを無効化(念のため) Dir.glob("./*.doc\0./*.doc?") do |word_file| # ワード文書を1つづつ処理 excel_file = word_file + ".xls" if test(?e, excel_file) # excel_fileが既に存在する時は削除 File.unlink(excel_file) end wb = xl.book_open(excel_file) # ワークブックを開く doc = wrd.doc_open(word_file) # ワードファイルを開く count = 0 # 表の数をカウント doc.Content.Tables.each do |tbl| # 表を1つづつ確認 count += 1 ss = wb.fes # 空のワークシートを選択 ss.Activate tbl.Range.Copy # ワードの表をクリップボードにコピー ss.Range("A1").Select # ワークシートでの書き出しの始点を選択 ss.Paste # クリップボードから貼り付け xl.CutCopyMode = false # クリップボードのcopy,pasteを無効化 ss.range_autofit # セル幅の自動調整 end doc.close if count >= 1 # 表の書き込みを1回以上 行った wb.ss(1).Activate wb.save # ワークブックの保存 end wb.close end xl.quit # Excelの終了 wrd.quit # ワードの終了