ラベル win32ole の投稿を表示しています。 すべての投稿を表示
ラベル win32ole の投稿を表示しています。 すべての投稿を表示

2013年6月13日木曜日

rubyでexcel操作

rubyでexcel操作するとしたら、今までは

VBA より便利で手軽 Excel 操作スクリプト言語「Ruby」へのお誘い (前編)
Win32OLE 活用法 【第 2 回】 Excel

を参考にしていた。

さすがに手間なので、書き込み限定で、

Ruby1.9でWriteExcelを試してみた。

りもしたけれども、 WriteExcelspreadsheet みたいなライブラリは、
Excelで使える機能の代替が無いか散々調べたあげく、
結局、細かい設定やExcel依存の機能をwin32ole経由で処理することが多いわけで。

ちょっと凝ったことをやりたければ、イチからwin32ole経由でExcel操作するスクリプトを書いた方が早い。
とはいえ、vba/vbscriptで培ったwin32ole操作スキルなんて普段使わないと忘れるので、
いつも思い出すところからスタートするのも苦痛。

Excel操作の必要があるたびに、Excel互換ライブラリを探して、無ければvba/vbscriptの復習。
vba/vbscriptを捨てるためにrubyに移行しているのに、復習からスタートする必要があるのは、いつも釈然としなかった。

Excelの読み書きをしたいんであって、vba/vbscriptの復習をしたいわけじゃないんだけど、、
っと思いつつ、久々に「ruby excel」でググったところ、
上位で見つけたExcel用のモジュールがとても便利だった。

Ruby: Win32OLEでの Excelの操作

これぐらい小さいモジュールであれば見ればすぐ思い出せるし、拡張や応用も楽。

(いい意味でvba/vbscriptよりも使いやすい)独自文法で、
(vba/vbscriptよりは落ちるけど比較的)多機能な
凝ったExcel互換ライブラリを無理に探す必要はないなぁ…っと、
目から鱗が落ちる思いでした。

以下、参考資料。

Ruby による Win32OLE プログラミング

2013年3月7日木曜日

RubyでOffice2007/2010のExcel/Word/PowerPoint/VisioファイルをPDF変換する際の注意点

  1. PDF/XPSドキュメントの作成について
  2. Office2010から標準でPDF/XPS ドキュメントを作成する機能が組み込まれている。
    ※Office2007では、2007 Microsoft Office プログラム用 Microsoft PDF/XPS 保存アドインをインストール必要がある。


    基本的には、指定した形式のファイルにエクスポート(ExportAsFixedFormatメソッド)を使用すればいい。


  3. ExportAsFixedFormatメソッドのパラメータについて
  4. Document.ExportAsFixedFormat Method (Word)
    Workbook.ExportAsFixedFormat メソッド (Excel)
    Presentation.ExportAsFixedFormat Method (PowerPoint)
    Document.ExportAsFixedFormat Method (Visio)


    出力先のパスを指定するキーワード名レベルで、各Officeドキュメントで指定方法が変わるので注意が必要。微妙な相違で落ちるため、コピペ対応をしようとして少しはまった。。
    例:Word…「OutputFileName」、Excel…「Filename」、PowerPoint…「Path」、Visio…「OutputFileName」

    個人的には、必須/任意オプションをオンラインドキュメントで確認しつつ、vbaの「マクロの記録」や「オブジェクトブラウザー」でコード値を調査し、試行錯誤していくのがやりやすかった。
    Office2010だと、開発タブが無いため、Office 2010 のリボンに「開発」を表示させたいを参考にして、「マクロ」や「Visual Basic」エディタから「オブジェクトブラウザー」を使用する。


  5. rubyスクリプトでPDFに変換する方法について
  6. 以下の記事が参考になった。
    Word,Excel,PowerPointをPDFに一括変換
    WordファイルやExcelファイルを一括でPDFに変換するRubyスクリプト


    プリンタドライバへの印刷と違い、ファイル名を指定して保存とほぼ同等な処理のため、PDF変換速度が速いのにびびった。
    なお、PowerPointだと、「ExportAsFixedFormat」が落ちるため、「SaveAs」メソッドで回避する必要がある。これではまった。。