2012-10-24 25 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 

更换第三(再次,你应该使用变量来表示工作簿和工作表对象,使你的代码更清洁)