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

[VB2] LinkExecute で使用できないマクロ コマンドの実行

文書番号: 410500

最終更新日: 1999/03/21


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


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

概要

Visual Basic for Windows 2.0 から LinkExecute メソッドを使用することで
Microsoft(R) Excel for Windows(TM) (以下 Excel) にマクロ コマンドを送る
ことができます。しかし、戻り値を持つマクロ コマンド (関数) および一部の
マクロ コマンドはマクロ シート上でのみ有効なため、LinkExecute メソッド
では送ることができません。
この資料のサンプルの様に Visual Basic for Windows 2.0 から Excel の
マクロ シートのセル上に展開し、これを実行させることで、この問題を回避する
ことが可能です。なお、Excel のマクロ コマンドの詳細に関しては Excel の
ヘルプ ファイル等を参照してください。

Excel の設定

あらかじめ起動させておいてください。また、このサンプルは R1C1 形式に
設定されていることを前提に作成されています。

Visual Basic の設定

コマンド ボタン (Command1) とテキスト ボックス (Text1) を配置し、
Command1 の Click イベントに以下のコードを記述してください。
サンプル実行後、コマンド ボタンをクリックすることで、Excel の
バージョンがメッセージ ボックスに表示されます。

サンプル

  Sub Command1_Click ()
      ' タイムアウト エラーの発生を防ぎます。
      Text1.LinkTimeout = -1
      Text1.LinkTopic = "Excel|System"
      Text1.LinkMode = 2
      ' マクロシートを新規に作成し、保存
      ' パス名およびファイル名は環境にあわせて変更してください。
      ' なお、ディスク上に存在していないファイル名にしてください。
      Text1.LinkExecute "[NEW(3)][SAVE.AS(""c:\test1.xlm"" ,1)]"
      Text1.LinkMode = 0
      Text1.LinkTopic = "Excel|test1.xlm"
      ' マクロ コマンドを記述するセル範囲を指定
      Text1.LinkItem = "R1C2:R2C2"
      Text1.LinkMode = 2
      ' マクロ コマンドで Excel のバージョンを調べます
      Text1.Text = "=GET.WORKSPACE(2)" + Chr$(&HD) + "=RETURN()"
      ' マクロ シートに展開
      Text1.LinkPoke
      '結果を表示させるように設定して実行
      Text1.LinkExecute "[DISPLAY(FALSE)][SELECT(""R1C2:R2C2"")][RUN()]"
      Text1.LinkMode = 0
      ' 結果を得るためにリンクしなおす
      Text1.LinkTopic = "Excel|test1.xlm"
      Text1.LinkItem = "R1C2"
      Text1.LinkMode = 2
      Text1.LinkRequest
      Text1.LinkMode = 0
      MsgBox "Excel の Version は " & Text1.Text
  End Sub

Keywords: KBHOWTO KB410500
Technology: kbAudDeveloper kbVBSearch

inserted by FC2 system