• ベストアンサー

DetectExcel 参照設定

VBで、Excelを起動する際、オブジェクト名.DetectExcelとやっています。 これが、参照設定「Microsoft Excel 11.0 Object Library」ではエラーとなり、「Microsoft Excel 9.0 Object Library」ではエラーになりません。 これは仕様なのでしょうか? 何か回避方法があればご教授下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

オブジェクトブラウザで見る限り Excel2003にDetectExcelといったメソッドは無いようです MSDN 2001/10月版の『GetObject 関数の使用例』の中に Sub DetectExcel() ' プロシージャが起動中の Excel を見つけると、それを登録します。 Const WM_USER = 1024 Dim hWnd As Long ' Excel が起動中の場合、この API 呼び出しからはハンドルが返ります。 hWnd = FindWindow("XLMAIN", 0) If hWnd = 0 Then ' 0 は、Excel が起動していないことを示します。 Exit Sub Else ' Excel は起動中なので、API の SendMessage 関数を使って、 ' 起動中オブジェクト テーブルに登録します。 SendMessage hWnd, WM_USER + 18, 0, 0 End If End Sub といったプロシージャが紹介されています

Mark0817
質問者

お礼

ありがとうございました。 大変参考になりました。 Excel2002までは標準でメソッドとしてもっていたようです。 チームでの話し合いの結果、このメソッドを使わない方向で行くことになりました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>DetectExcel はObject名ではないでしょう。 http://support.microsoft.com/kb/155201/ja の後半にSub DetectExcel() があり、サブプロシージュアーの名前でしょう。 オブジェクト名で既に存在するならSUBプロ名は別にするのではないかと。 ここに2つのAPIが使われていて、それがうまく働かないのだと思いますが。 詳細を説明できませんがWEBで記事を見つけたので書いておきます。

Mark0817
質問者

お礼

ありがとうございました。 Excel2002までは標準でメソッドとしてもっていたようです。 チームでの話し合いの結果、このメソッドを使わない方向で行くことになりました。

関連するQ&A