|
Daiです。おはようございます。
クリップボードからの抜き出しはできませんでした。
ですが、かみちゃんさん、Keinさんのアドバイスを参考にして
目的は達成することができました。
本当にありがとうございました。
いままでウマくいかなかったのは、
変数を宣誓するのをすべて"Dim"でやってたからでした。
(独学のためPubilcの使い方をしりませんでした。はすがしい)
かみちゃんさん
過去ログ、大変参考になりました。
ありがとうございました。
Keinさん
35036でご指摘の通りIEのインスタンスを作成後に
HTMLソースを抜くパターンがはるかに楽でした。
別のマクロで起動した後に画面が変わっても
インスタンスが継続されることが理解できました。
FormのTextBoxの入力値についても、.InnerHTMLなら
入力したばかりのデータでも無事取得できました。
ありがとうございました。
下のマクロで改良したほうが良い点があれば
ぜひぜひ、教えてください。
Public objIE As Object 'IEオブジェクト参照用
Sub IECreate()
Dim strURL As String
strURL = "http://www.google.co.jp/"
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする
objIE.Navigate strURL
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ
DoEvents
Loop
End Sub
Sub SuIE()
Dim Su As String
'表示終了まで待つ(念のため)
Do While objIE.Busy = True
'何もしないループ
DoEvents
Loop
With objIE.Document
'ソースをSuへ
Su = .Body.innerHTML
End With
Call ListMake(Su) 'Suのデータからリストを作る
'HTMLソースの取得テスト
' Open "C:\SampleSu.txt" For Output As #1
' Print #1, Su
' Close #1
'ソーステストEnd
End Sub
Sub ListMake(Su As String)
Dim Getdata As String '取得文字列
Dim SWord As String 'ソースの切り出したい直前の文字列
Dim EWord As String ''エンドの直後の文字列
Dim x As Long, y As Long
SWord = "Value="
EWord = ">"
x = InStr(1, Su, SWord)
If x = 0 Then
MsgBox "検索値が見つかりません"
Exit Sub
Else
MsgBox "検索成功"
x = x + Len(SWord): y = InStr(x, Su, EWord)
Getdata = Mid$(Su, x, y - x)
x = y + Len(EWord)
MsgBox Getdata
End If
End Sub
|
|