本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

VBA モジュールと Lotus 1-2-3 のマクロを混在させる方法

文書番号: 402570

最終更新日: 1997/10/21


この資料は以下の製品について記述したものです。

この記事は、以前は次の ID で公開されていました: JP402570

概要

Excel 5.0 では、Lotus 1-2-3 R2.3 以前のバージョン (以下 1-2-3) で作成したマクロを含む 1-2-3 のワークシートを Excel 5.0 でオープンし、[Ctrl] キーを押しながら範囲名のアルファベット キーを押す操作で 1-2-3 のマクロを実行することができます。
また、1-2-3 のマクロから Excel 5.0 の Microsoft(R) Visual Basic(R) Programming System Applications Edition (以下 VBA) への移行がスムースに行えるように、XLCALL 命令と XLBRANCH 命令を補助的位置付けで用意しています。
本文書では、これらの命令を使って 1-2-3 のマクロから Excel 5.0 のモジュールを呼び出したり分岐する方法について、サンプル マクロと共に解説しています。

詳細

1-2-3 のマクロから VBA のモジュールを呼び出したり分岐するには XLCALL 命令 あるいは XLBRANCH 命令を用います。両者の違いは次の通りです。

XLCALL

VBA モジュールを呼び出します。VBA モジュールが終了すると、マクロの制御が 1-2-3 マクロに戻ります。

XLBRANCH

VBA モジュールに分岐します。VBA モジュールが終了しても、マクロの制御は 1-2-3 マクロに戻らずに、VBA モジュールが終了した時点でマクロ全体が終了します。

「サンプル A 」の 1-2-3 マクロを実行すると、XLCALL によって VBA モジュールを実行します。その後 1-2-3 マクロに制御が移り「 1-2-3 に戻りました (Y/N) 」と表示してマクロを終了します。
「サンプル B 」の 1-2-3 マクロを実行すると、XLBRANCH によって VBA モジュールを実行します。VBA モジュールの実行が終わっても、1-2-3 マクロには制御が戻りませんので、「 VBA の MsgBox 関数を用いてメッセージを表示しています。」と表示した後マクロが終了します。
  <サンプル A>
  WJ2 ファイル
  ------------
  \a      {getlabel "Excel VBA のモジュールをコールします (Y/N)",a10}~
          {XLCALL ExcelVBA}
          {getlabel "1-2-3 に戻りました。 (Y/N) ",a10}~
  Visual Basic モジュール
  -----------------------
  Sub ExcelVBA()
      MsgBox "VBA の MsgBox 関数を用いてメッセージを表示しています。"
  End Sub
  <サンプル B>
  WJ2 ファイル
  ------------
  \a      {getlabel "Excel マクロをコールします (Y/N)",a10}~
          {XLBRANCH ExcelVBA}
          {getlabel "1-2-3 に戻りました。 (Y/N) ",a10}~
  Visual Basic モジュール
  -----------------------
  Sub ExcelVBA()
      MsgBox "VBA の MsgBox 関数を用いてメッセージを表示しています。"
  End Sub
アクティブ ブックに「 Visual Basic モジュール (Visual Basic 言語用のシート) 」 を追加するには、[挿入] - [マクロ] - [モジュール] サブコマンドを実行します。上記の Visual Basic モジュールの記述例は、ワークシートではなく必ずVisual Basic モジュールに記述してください。
なお、WJ2 形式の 1-2-3 のファイルに Visual Basic モジュールを追加して、呼び出したいモジュールを記述した場合には、特に名前の定義などをする必要はありません。他のブックに閉じこまれているモジュールを呼び出したい場合には、呼び出すファイル (WJ2 ファイル) 側で、[挿入] - [名前] - [定義] サブコマンドを実行し、呼び出すマクロの名前を定義する必要があります。
上記の例では、呼び出すマクロは 「 ExcelVBA 」です。[名前定義] ダイアログ ボックスの [名前一覧] テキスト ボックスに「 ExcelVBA 」、[参照範囲] テキストボックスには、例えばこのマクロが BOOK1.XLS の Visual Basic モジュール「 Module 1 」に記述されている場合では、「=BOOK1.XLS!Module1.ExcelVBA 」というように定義します。

関連情報

[?] - [キーワードで検索] コマンドを実行し、キーワード「 1-2-3 マクロ」、項目「 Lotus 1-2-3 マクロを Excel で実行するには」へジャンプしてください。関連項目「既存の Lotus 1-2-3 マクロを Excel で実行するための手引き」では、1-2-3 マクロを実行する上でのヒントが記述されています。

Keywords: KBHOWTO KB402570
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system