わかった。そこで、このコードがどのように機能するかについての私の思考プロセスを以下に示します。for ループを使用して繰り返し処理したい Web アドレスのリストを含むシートがあります。Web アドレスごとに、Web ページ全体をコピーしてワークブックの一時シートに貼り付けたいと思います。ページを Excel(2010) に貼り付けた後、書式設定を行います。一時シートから必要なものだけをコピーしてマスターシートに貼り付けます。次のリンクは Internet Explorer でナビゲートされ、Web ページが一時シートに貼り付けられる前と同様に、必要なものがマスター シートに追加されます。次の問題が発生しています。
1)Webページに貼り付けるためにどのワークシートを宣言しても、常に最初のシートに貼り付けられます。これはたまたまコマンド ボタンを配置したシートですが、違いはありません。それはすべきですか?
2) マスターシートへの追加が機能していません。マクロの実行が終了すると、マスター シートに貼り付けられたように見える唯一のレコードは、最後の Web ページからのものです。
問題#2を修正するために、Webページを選択/コピー/Excelに貼り付ける間に一定時間の一時停止を追加する必要があるのではないかと考えています。これらの問題のいずれかに関するヘルプをいただければ幸いです。
Private Sub CommandButton1_Click()
Dim IE As Object
startTime = Now()
Set IE = CreateObject("InternetExplorer.Application")
For rows1 = 2 To 11
For columns1 = 2 To 2
strLink = ThisWorkbook.Sheets("links").Cells(rows1, columns1)
With IE
.Visible = True
.Navigate strLink
Do While IE.ReadyState <> 4
DoEvents
Loop
IE.ExecWB 17, 0
IE.ExecWB 12, 2
ThisWorkbook.Sheets("temp").Paste Range("A1")
End With
'Copy/paste and format from temp to master sheet
nextRow = ThisWorkbook.Sheets("master").Range("A1").End(xlDown).Row + 1
ThisWorkbook.Sheets("temp").Range("A173:S247").Copy
ThisWorkbook.Sheets("Master").Range("A" & nextRow).PasteSpecial Paste:=xlPasteValues
Next columns1
Next rows1
endTime = Now()
MsgBox ("Done running. It took from " & startTime & " to " & endTime & ".")
End Sub