0

わかった。そこで、このコードがどのように機能するかについての私の思考プロセスを以下に示します。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  
4

1 に答える 1

1

問題 1: コードThisWorkbook.Sheets("temp").Paste Range("A1")は常にアクティブ シートを参照します。シート オブジェクトが定義されていないため、Range("A1") はアクティブ シートを使用していることが暗示されます。関数の引数で正しいシートを参照する必要があります。したがってThisWorkbook.Sheets("temp").Paste ThisWorkbook.Sheets("othersheet").Range("A1")、スクリーンスクレイプを「temp」以外に貼り付けたい場合は試してください

(ThisWorkbook と各 Sheet を変数に設定すると、コードがはるかに読みやすくなります)

問題 2: マスター シートの最後の行の後に貼り付けようとしています。そのセクションの最初の行を失い、2 番目を保持し、3 番目を次のように置き換えます

ThisWorkbook.Sheets("Master").Cells(ThisWorkbook.Sheets("Master").UsedRange.Rows.Count + 2, 1).PasteSpecial Paste:=xlPasteValues

(ここでも、変数を使用してワークブックとワークシート オブジェクトを表し、コードをより簡潔にする必要があります)

于 2012-10-24T04:44:50.447 に答える