Top > OOobbs > 67

OOobbs/67 Edit

  • サマリ: ExcelマクロをCalcで読み込んだときのマクロシートの扱い
  • 環境: Calc
  • 状態: 解決
  • 投稿者: Kuma?
  • 投稿日: 2005-05-22 (日) 10:56:22

質問 Edit

Vine3.0でOOo1.1.2を使っています。Excelに書いたVBAマクロをOOo_Basicに移行する下記作業についてご教示お願い致します。

ExcelをCalcで読み込み、Calcの『マクロ-->編集』でマクロエディターを出すと、エディター画面にsheet1,sheet2,...Moduleと言う複数のマクロシートが表示され、各々のシートにExcelVBAのマクロが移植されます。

お尋ねしたいのは、ExcelVBAと同じ様に、sheet1,sheet2,...Moduleに書かれているマクロを連動して動作させると言う事は出来るのでしょうか。(Calcのマクロエディターには『挿入』と言うメニューが見当たらないので出来ないのかなとも思っていますが。)

今はその可否が分からないので、移植した各sheet上のマクロ全てを切り取ってModuleシート1枚のみに貼り付け、マクロシートはModuleシートのみを残してから編集しています。

これでもマクロ動作上の問題は無いのですが、Moduleシート上のマクロコードが多量になって編集が繁雑になってしまうので、解決策が有れば良いなと思ってお尋ねしました。

回答 Edit

  • 他のモジュールの Sub や Function などに処理を行わせることは可能です。といった意味でのマクロの連動という意味でしょうか? -- はにゃ?? 2005-05-22 (日) 11:43:19
  • マクロエディターの画面下のモジュール名のタブ上でマウスを右クリックすると「挿入(A)」メニューがあり、「BASICモジュール」「BASICダイヤログ」の2種類が挿入できますよ。

    Excelの場合、Sheet1、Sheet2、ThisWorkbookと言った各シートやブックに直接コードを書くことが出来るMicrosoft Excel Objectなる物が存在しますが、それに相当するものはcalcにはありません。これらの存在メリットは、シート等のオブジェクト上にコードが存在するのでコード内で"Me."でシート自身を指定してそれらのプロパティやメソッドを記入出来ることです。記入するコードもおのずと各シート毎やブック毎の設定やイベント処理に限定する内容になる傾向があると思います。

    calcのマクロモジュールは、いずれもExcel風に言うと標準モジュールかクラスモジュールと言ったところでしょうか。モジュール間でお互いのモジュール内のサブルーチンや関数を呼び出すことは「はにゃ」さんが答えられているように可能です。
    <モジュール名>.<サブルーチン/関数名>
    Sheet1.test1()
    私の場合、共通処理や関数をまとめるコードの整理目的でモジュールを分けて使用しています。こんな感じでしょうか。 -- 河井? 2005-05-22 (日) 13:48:34
  • はにゃさん、河井さん、ご回答有難う御座いました。calcの場合のmoduleシートの扱い方(素晴しい工夫ですね!)がとても良く分かりました。そのやり方を使わせて頂きます、有難う御座いました。 -- Kuma? 2005-05-22 (日) 15:47:28


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes