毛井さん 安部です。 下記の情報ありがとうございます。
On Tue, 3 Jul 2012 18:24:46 +0900, Hirono Moi <[email protected]> wrote: > 例えば、以下のVBAを持つEXCElファイルがあるとします。 > > Sub Main() > ThisWorkbook.Worksheets("Sheet3") > End Sub > > このEXCELファイルをCALCで開き、ods形式で保存し、いったんファイルを > 閉じます。 > ods形式に保存したファイルをcalcで開いて、このVBAマクロを実行すると、 > 以下のエラーとなります。 > BASICランタイムエラー > '423' > Worksheets > > モジュール名「ThisWorkbook」が存在し、コード中の「ThisWorkbook」と > 衝突することが影響して発生してるようです。 > > モジュール「ThisWorkbook」を削除すると、元々の期待する動作:Sheet3を > 選択します。 LibreOffice 3.5.4 で試したところ上記の振舞いが再現しました。 元の Excel ファイルをそのまま読み込んでマクロを実行するとエラーにならない ところもポイントですね。 > > このモジュール「ThisWorkbook」は、LibreOfficeがVBAマクロを含むEXCEL > ファイルを読み込むときに、VBAモジュールから自動的に生成しています。 > > モジュール「ThisWorkbook」があるから、この423エラーが発生する、、、 > 確かにその通りなのですが。。。 生成される ThisWorkbook モジュールは空っぽでした。 ThisWorkbook という VBA での特別な属性より、こちらの ThisWorkbook を優先 しているのが問題のようです。 > > bugzillaに要望として登録しようとしたのですが、そもそもどういう動きを > することが要望として適切なのか、わかりませんでした。 VBASupport が on の場合は ThisWorkbook を予約語として優先する、あるいは マクロを含む Excel ファイルを ods にしたときに ThisWorkbook モジュールを 作らない、という動作になればいいかなと思います。 -- Takeshi Abe > > 皆様、どう思われるでしょうか? > > -- > Hirono Moi > > -- > Unsubscribe instructions: E-mail to [email protected] > Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette > List archive: http://listarchives.libreoffice.org/ja/discuss/ > All messages sent to this list will be publicly archived and cannot be deleted > -- Unsubscribe instructions: E-mail to [email protected] Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette List archive: http://listarchives.libreoffice.org/ja/discuss/ All messages sent to this list will be publicly archived and cannot be deleted
