[リストへもどる]
一括表示

投稿時間:2004/07/22(Thu) 14:21
投稿者名:バルデラマ
Eメール:
URL :
タイトル:
WebBrowserにてEXCELの値を取得する
はじめて書き込ませていただきます。よろしくお願いします。

VB6にて
WebBrowserにてEXCELファイルを表示し、選択したセルの値を取得するツールを作成しております。

WebBrowserに表示されたEXCELファイルのセルを右クリックするとセット先(テキストボックスへセット)の
項目一覧がポップアップメニューとして出てきて選択した項目にその値をセットする機能
を作成したいのですが、
EXCELファイルのセルを右クリックするとEXCELの標準?のメニューが出てきてしまいうまくできません。

メニューを作りFormのMouseDownイベントにそのメニューを表示するようにしてFormを右クリックすること
によって一応は値をセットできるようにはなったのですが、
EXCELファイルのセルを右クリックした時にメニューを表示するようにしたいのです!!

WebBrowserにMouseDownようなイベントがあればよいのですが見つかりません。
EXCELファイルのセルを右クリックした時点でEXCELに制御がいっているようで、
私の知識では行き詰ってしまいました。

どなたかご存知の方がいらっしゃいましたら、お教え願います。
よろしくお願いします。

投稿時間:2004/07/22(Thu) 15:15
投稿者名:りっとっと
Eメール:
URL :
タイトル:
Re: WebBrowserにてEXCELの値を取得する
できなくもないですけどね
Private xlBook As Excel.Workbook
Private WithEvents xlSheet As Excel.Worksheet
Private Sub Form_Load()
WebBrowser1.Navigate "c:\book1.xls"
End Sub
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Set xlBook = pDisp.Document
    Set xlSheet = xlBook.ActiveSheet
    xlBook.Application.Visible = False
End Sub

Private Sub xlSheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
    PopupMenu mnuTest
    Cancel = True
End Sub

とこんな感じで、エクセルのシートオブジェクトをWithEventsステートメントつきで宣言すれば
xlSheetでのイベントが拾えますので、BeforeRightClickイベントで、引数のCancelにTrueを入れれば
キャンセルされ、エクセルのポップアップメニューは表示されません。
サンプルを実行するとわかりますが、PopupMenuでVBのメニューを表示させクリックもできるのですが
クリックできるまで間が生じてしまいます。この間をどうにかして消せないものかな

投稿時間:2004/07/22(Thu) 16:24
投稿者名:バルデラマ
Eメール:
URL :
タイトル:
Re^2: WebBrowserにてEXCELの値を取得する
おおっ!!できました。
WithEventsなんてあったんですね、ありがとうございます。

でも、確かにクリックできるまでに間がありますね...。
間の解消は、自分でも調査してみたいと思います。
が、もし何かわかりましたら教えてください。

りっとっと さん、本当にありがとうございました。

> できなくもないですけどね
> Private xlBook As Excel.Workbook
> Private WithEvents xlSheet As Excel.Worksheet
> Private Sub Form_Load()
> WebBrowser1.Navigate "c:\book1.xls"
> End Sub
> Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
>     Set xlBook = pDisp.Document
>     Set xlSheet = xlBook.ActiveSheet
>     xlBook.Application.Visible = False
> End Sub
>
> Private Sub xlSheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
>     PopupMenu mnuTest
>     Cancel = True
> End Sub
>
> とこんな感じで、エクセルのシートオブジェクトをWithEventsステートメントつきで宣言すれば
> xlSheetでのイベントが拾えますので、BeforeRightClickイベントで、引数のCancelにTrueを入れれば
> キャンセルされ、エクセルのポップアップメニューは表示されません。
> サンプルを実行するとわかりますが、PopupMenuでVBのメニューを表示させクリックもできるのですが
> クリックできるまで間が生じてしまいます。この間をどうにかして消せないものかな

投稿時間:2004/07/22(Thu) 17:42
投稿者名:バルデラマ
Eメール:
URL :
タイトル:
Re^3: WebBrowserにてEXCELの値を取得する
ポップアップメニューが表示されてから選択可能になるまでの間の解消ですが、
以下プロシージャ内で
> > Private Sub xlSheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
> >     PopupMenu mnuTest
> >     Cancel = True
> > End Sub
DoEventsをあらゆる箇所に入れてみたり、Cancel=Trueを先に
処理してみたりしてみましたが、解消できませんでした。

間があくときもあれば、まったくあかずにスムーズな場合もあり原因がわかりません。
同じセルを連続で選択すると、必ず遅くなってしまうようです。

たびたびすみませんが、解決方法をご存知の方
お知恵をお借りできればと思います。よろしくお願いします。

ちなみに...
いろいろと確認しているときに以下メッセージのような感じのものが出力されました。
「他のOLEが使用しているので終了するまで待ちます。」
(すぐに消してしまったので正しい内容ではありません..こんな感じの内容でした...)
何か関係があるのでしょうか?


> おおっ!!できました。
> WithEventsなんてあったんですね、ありがとうございます。
>
> でも、確かにクリックできるまでに間がありますね...。
> 間の解消は、自分でも調査してみたいと思います。
> が、もし何かわかりましたら教えてください。
>
> りっとっと さん、本当にありがとうございました。
>
> > できなくもないですけどね
> > Private xlBook As Excel.Workbook
> > Private WithEvents xlSheet As Excel.Worksheet
> > Private Sub Form_Load()
> > WebBrowser1.Navigate "c:\book1.xls"
> > End Sub
> > Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
> >     Set xlBook = pDisp.Document
> >     Set xlSheet = xlBook.ActiveSheet
> >     xlBook.Application.Visible = False
> > End Sub
> >
> > Private Sub xlSheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
> >     PopupMenu mnuTest
> >     Cancel = True
> > End Sub
> >
> > とこんな感じで、エクセルのシートオブジェクトをWithEventsステートメントつきで宣言すれば
> > xlSheetでのイベントが拾えますので、BeforeRightClickイベントで、引数のCancelにTrueを入れれば
> > キャンセルされ、エクセルのポップアップメニューは表示されません。
> > サンプルを実行するとわかりますが、PopupMenuでVBのメニューを表示させクリックもできるのですが
> > クリックできるまで間が生じてしまいます。この間をどうにかして消せないものかな