dポイントプレゼントキャンペーン実施中!

VBで、Excelを起動する際、オブジェクト名.DetectExcelとやっています。

これが、参照設定「Microsoft Excel 11.0 Object Library」ではエラーとなり、「Microsoft Excel 9.0 Object Library」ではエラーになりません。
これは仕様なのでしょうか?

何か回避方法があればご教授下さい。
よろしくお願いします。

A 回答 (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
といったプロシージャが紹介されています
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/17 13:23

>DetectExcel


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

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

お礼日時:2008/07/17 13:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!