Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: win32_ole_filter
寺西です。
Yukio USUDA wrote:
>
> use Win32::OLE::Const 'Microsoft Excel';
> で読み込むのをやめて
>
> use Win32::OLE::Const;
> にしておいて
>
> status()の中で他の行と同じように
> Win32::OLE::Const->Load('Microsoft Excel');
> で読み込めばワーニングは表示されなくなりますがどうでしょうか。
http://search.cpan.org/~jdb/Win32-OLE-0.17/lib/Win32/OLE/Const.pm
によると、前者の指定方法だと、Excel constants names が main namespace
で設定されるので、xlText が使えるわけですが、それが今回問題になって
いるので、main namespace で使えない後者の指定方法にするということは、
妥当だろうと思います。
このようにすることで、今後 olexxxx.pl に手を加えた際に、(別の定数を
追加するなどした場合)同じ問題を起こすことはなくなるので、良いこと
ではないかと思います。
ちなみに三番目の
use Win32::OLE;
use Win32::OLE::Const;
my $Excel = Win32::OLE->new('Excel.Application', 'Quit');
my $xl = Win32::OLE::Const->Load($Excel);
という方法だと Type Library のバージョンを指定しなくて良さそうです
が、対応メディアタイプがバージョンに依存する場合が多いので、二番目
の方法が良いのでしょう。
なお、Excel2002 で Win32::OLE を使っている際に、もうひとつ Win32::OLE
を使うと、アプリケーションがビジーということで、
$excel->Workbooks->Open() が失敗します。しかも "Open" メソッドが
未定義と言われることもあったりして...困ったものです。
# Excel2000 だと大丈夫なのかといったところまではチェックできていません。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E