- ベストアンサー
DetectExcel 参照設定
VBで、Excelを起動する際、オブジェクト名.DetectExcelとやっています。 これが、参照設定「Microsoft Excel 11.0 Object Library」ではエラーとなり、「Microsoft Excel 9.0 Object Library」ではエラーになりません。 これは仕様なのでしょうか? 何か回避方法があればご教授下さい。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
オブジェクトブラウザで見る限り 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 といったプロシージャが紹介されています
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
>DetectExcel はObject名ではないでしょう。 http://support.microsoft.com/kb/155201/ja の後半にSub DetectExcel() があり、サブプロシージュアーの名前でしょう。 オブジェクト名で既に存在するならSUBプロ名は別にするのではないかと。 ここに2つのAPIが使われていて、それがうまく働かないのだと思いますが。 詳細を説明できませんがWEBで記事を見つけたので書いておきます。
お礼
ありがとうございました。 Excel2002までは標準でメソッドとしてもっていたようです。 チームでの話し合いの結果、このメソッドを使わない方向で行くことになりました。
お礼
ありがとうございました。 大変参考になりました。 Excel2002までは標準でメソッドとしてもっていたようです。 チームでの話し合いの結果、このメソッドを使わない方向で行くことになりました。