エクセルIE操作、クラスが二つあり、片方をコピー
お世話になります。
エクセルマクロでのIE操作について質問です。
環境
エクセル2007
visual basic 6.5
参照設定、デフォルトと下記二つを追加
'Microsoft Internet Controls
'Microsoft HTML object Library
エクセルでB列に入力してある単語を、http://www.langtolang.com/から、指定の言語で検索し、
検索結果をシートに貼り付けるものを作ろうとしているのですが、貼り付けに困っています。
作業手順
1、B6から下へ検索したい単語を入力する
2、C2に元の言語、D2に調べたり言語を入力(入力規則で指定しました)
ここからがマクロの手順です
3、IEを開き、指定のページへ移動
4、getelementsbytagnameで、言語の選択と、インプットボックスに単語入力
5、submit
6、検索結果が"no translation found"以外の場合、新しいシートを挿入し、シート名を検索単語に変更し、そこに検索結果をテーブルで貼り付け
7、テーブルに貼り付けたれた検索結果を、検索単語が羅列してあるシートの、検索単語の横に貼り付ける。訳が複数見つかった場合、横並びして張り付ける
これを繰り返す。
このようなものを作りたいのですが、テーブルが複数あり、また同じクラス名のテーブルも複数あるため、どうやって、検索結果だけを選択すれば良いのか困っています。
今のコードは以下です。
よろしくお願いします。
Sub open_ie()
'enable the following reference
'Microsoft Internet Controls
'Microsoft HTML object Library
'VBA version
'VBA version 6.5.10.53
Dim home As Worksheet
Set home = Sheets("Search page")
home.Activate
'open IE
Dim objIE As Object 'create variable
Set objIE = CreateObject("InternetExplorer.Application") 'create object
objIE.Visible = True 'make ie visible
objIE.Navigate "http://www.langtolang.com/" 'navigate Ie to dictionary
'wait while IE is busy
Do While objIE.Busy = True
DoEvents
Loop
'static-------------------------
'Create object variable for source and target language on IE
Dim objSourceLanguage As Object
Dim objTargetLanguage As Object
'choose language by variable.
Dim SourceLanguage As String
Dim TargetLanguage As String
SourceLanguage = Worksheets("Search page").Cells(3, 2).Value
TargetLanguage = Worksheets("Search page").Cells(5, 2).Value
'cell setting--------------------------
Dim i As Integer
i = 6
Dim word As String
'looping procedure stard from here-----------------------------
word = Cells(i, 2).Value
Do While objIE.Busy = True
DoEvents
Loop
objIE.document.forms("frmSozluk").getElementsByTagName("selectFrom") = SourceLanguage 'set source language
objIE.document.forms("frmSozluk").getElementsByTagName("selectTo") = TargetLanguage 'set target language
Do While objIE.Busy = True
DoEvents
Loop
objIE.document.forms("frmSozluk").Item("txtLang").Value = word 'set word in cells(i,2)
objIE.document.forms("frmSozluk").submit
Do While objIE.Busy = True
DoEvents
Loop
'copy output----------------------------------------
Dim table As HTMLTable
Dim sheet As Worksheet
For Each table In objIE.document.all
If table.className = "blue" Then
Sheets.Add after:=Sheets("Search page")
ActiveSheet.Name = word
Set sheet = ActiveSheet
End If
Next
home.Activate
End Sub