Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32407 / 76734 ←次へ | 前へ→

【49563】Re:IEで新しく開いたWindowを制御する
発言  neptune  - 07/6/11(月) 15:06 -

引用なし
パスワード
   ▼ハチ さん:
こんにちは

>実際は子WindowのinnerText(もしくはソース)を引っ張って
>データ取得しようしていました。
>hwndからオブジェクトを取得するには、またまたAPIでやる必要がありそうですね。
え〜っと、IE内のテキストデータなどを取得したいなら、APIでやると
恐ろしく難しいことをしなければならないような気がします。
・・・・私はやったことないです。

その目的ならですが、Microsoft Web browserコントロールというものを
ご存知でしょうか?
確かOffice2000の頃はAccessには付属していたような気がします。(未確認です)

付属していなかったら、VB2005 ExpressEdition (MSが無料で配布しているやつ)
に付属しています。

これでやると、イベントも取得できるし、objectを作らなくても良いし
結構楽チンです。私も、過去ログを収集するのにツールを作ったことあります。
・・・今はどこかに行きましたけど。

大きなお世話かもしれませんが、ハチさんなら、環境が許すなら
OfficeのWebbrowserコントロールを使用するか、VB2005をタダでGet、
インストールして、そちらでおつくりになる方が将来のためにも
宜しいんじゃないでしょうか?
多分サンプルも沢山Web上に在りそうですし。割と簡単にできると思います。
VB2005自体はVBAと全く別物なので少しなれるのに時間はかかるとは思いますが。

>提示して頂いたサンプルコードを調べていたのですが、
>「AddressOf」演算子あたりで脳ミソから煙が出ました。
ビールでもかけて消して下さい^ ^;;

この辺りのことは既にご存知でしょうが、ややこしそうな気がするところを
一応簡単に説明しておきます。

EnumFuncはenumwindows用のコールバック関数、EnumWindowsProc API関数です。
関数の名前はEnumWindowsProc とする必要はなく、
BOOL CALLBACK EnumWindowsProc(
 HWND hwnd,   // 親ウィンドウのハンドル
 LPARAM lParam  // アプリケーション定義の値
);
の構造を持っていれば、任意の名前をつけることが出来ます。

 第2引数では、任意の数値を指定できるので、今回は除外するHWNDを渡してます。
>Private Function EnumFunc(ByVal hwnd As Long, _
>          ByVal lparam As Long) As Boolean

クラス名を保存するのに十分な文字数の領域を確保しておく。
MAX_PATHは、Cでは、普通255と定義されるものなので、わかりやすいので使用してます。
>Dim sClassName As String * MAX_PATH
>Dim sbuf As String
>
>  EnumFunc = True

引数hwndのクラス名を取得します。
>  GetClassName hwnd, sClassName, MAX_PATH
取得したクラス名には有効な文字以降255文字目まではchr(0)で満たされて
いますから、不要な文字chr(0)を取り除き、判断に使用します。
>  sbuf = Left(sClassName, InStr(1, sClassName, Chr(0)) - 1)
ここは良いですね。
>  If sbuf = IEClassName Then
>    If hwnd <> lparam Then
>      OtherIE = hwnd
見つかって、目的を達成したので、これで関数を走らせるのを止める。
(戻り値をFalseにする。Trueの場合は全てのWindowを列挙し終わるまで走り続ける。)
>      EnumFunc = False
>    End If
>  End If
>End Function
>
11 hits

【49515】IEで新しく開いたWindowを制御する ハチ 07/6/8(金) 14:04 質問
【49518】Re:IEで新しく開いたWindowを制御する neptune 07/6/8(金) 15:38 発言
【49532】Re:IEで新しく開いたWindowを制御する ハチ 07/6/8(金) 18:09 お礼
【49538】Re:IEで新しく開いたWindowを制御する neptune 07/6/9(土) 14:55 回答
【49544】Re:IEで新しく開いたWindowを制御する neptune 07/6/10(日) 10:19 発言
【49562】Re:IEで新しく開いたWindowを制御する ハチ 07/6/11(月) 13:14 お礼
【49563】Re:IEで新しく開いたWindowを制御する neptune 07/6/11(月) 15:06 発言
【49569】Re:IEで新しく開いたWindowを制御する ハチ 07/6/11(月) 16:46 お礼
【49578】Re:IEで新しく開いたWindowを制御する neptune 07/6/11(月) 21:55 発言
【49586】Re:IEで新しく開いたWindowを制御する ハチ 07/6/12(火) 9:29 発言
【49592】WebBrowserコントロールもやってみました ハチ 07/6/12(火) 11:23 発言
【49600】Re:WebBrowserコントロールもやってみました neptune 07/6/12(火) 14:08 発言

32407 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free