2012-10-24 38 views
0

好的。所以這是我的代碼如何工作的思考過程。我有一張表格,其中列出了我想使用for循環遍歷的Web地址列表。對於每個網址,我想將整個網頁複製並粘貼到工作簿中的臨時工作表中。在頁面被粘貼到Excel(2010)後,我會做一些格式化。只從臨時工作表複製並粘貼我想要的內容到主工作表。然後在Internet Explorer中導航下一個鏈接,就像在將網頁粘貼到臨時表之前,然後將所需的內容附加到主表單。我遇到以下問題:VBA自動化從網站複製/粘貼

1)無論我聲明要粘貼到網頁的工作表總是粘貼到第一張表。這恰好是我有我的命令按鈕的工作表,但這不應該有所作爲。應該是?

2)附加到主表單不起作用。當宏完成運行時,似乎已粘貼到主表的唯一記錄來自最後一個網頁。

我在想,也許我需要做的是在選擇/複製/粘貼網頁到Excel以修復問題#2之間添加一段時間的暫停。對這些問題的幫助將不勝感激。

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 
+2

爲什麼遵循這樣一個漫長的過程?爲什麼不提取相關信息而不是整個頁面?你可能會發現這個鏈接有趣... http://stackoverflow.com/questions/8798260/html-parsing-of-cricinfo-scorecards –

+0

你會怎麼做與鉻相同的事情?我可以讓它打開一個chrome的實例,但只要它試圖使它看起來錯誤了。 '昏暗CHR作爲對象 殼牌( 「」 「C:\程序文件(x86)\谷歌\鉻\應用\的chrome.exe」 「」) 對於rows1 = 1至5000 對於columns1 = 1至1 與CHR .Visible = True' 一個它得到。看不見它的錯誤。 – user1787114

回答

1

問題1:你的代碼ThisWorkbook.Sheets("temp").Paste Range("A1")將總是指活性片 - 範圍(「A1」)是隱含要使用活性片,因爲沒有定義的片狀物體。您需要在函數的參數中引用正確的表單。因此,嘗試ThisWorkbook.Sheets("temp").Paste ThisWorkbook.Sheets("othersheet").Range("A1")如果你想粘貼到不是「臨時」以外的屏幕刮

(你的代碼將更具可讀性,如果你設置的ThisWorkbook和每一張變量)

問題2:您正在尋找在主表單上的最後一行之後粘貼。失去部分的第一線,保持第二,在與

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

更換第三(再次,你應該使用變量來表示工作簿和工作表對象,使你的代碼更清潔)