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