首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel网络抓取

Excel网络抓取
EN

Stack Overflow用户
提问于 2014-06-09 01:21:44
回答 1查看 387关注 0票数 0

我在用Excel抓取网页时遇到了麻烦。我要这个网站的数据: charitynavigator.org

我正在对以下链接列表进行测试运行:http://www.charitynavigator.org/index.cfm?bay=search.results&cgid=7&cuid=30

我录制了一个宏,通过第一个链接( Aims项目)。然后,我添加了一个“循环”(?)有人在YouTube视频里用过。录像师解释了代码的逻辑,因此循环似乎是有意义的,并且适用于我的问题。然而,在抓取第一页之后,程序就无法进入下一个网页。

这是我的密码

代码语言:javascript
复制
Sub adds()

'For i = 1 to 5
 For x = 1 To 5
 Worksheets("IntlHum").Select
 Worksheets("IntlHum").Activate
 mystr = "URL;http://www.charitynavigator.org/index.cfm?bay=search.summary&orgid=3803"
 mystr = Cells(x, 1)
 Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = x

With ActiveSheet.QueryTables.Add(Connection:= _
    mystr, _
    Destination:=Range("$A$1"))
    '.CommandType = 0
    .Name = "index.cfm?bay=search.summary&orgid=3803_1"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = "2,3,4,5"
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With

Next x

End Sub

YouTube的视频是https://www.youtube.com/watch?v=qbOdUaf4yfI,我是一个完全的新手。我懂逻辑,曾与斯塔塔和LaTexx合作过,但我不是计算机科学家。请尽量减少行话。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-10 05:34:17

在第二遍(x = 2)中,"ActiveSheet“的概念可能已经改变了,因此行mystr = Cells(x, 1)不会返回预期的值,因为它可能会从不同的数据源读取。(更多细节请参见Application.Cells属性的办公室文档 )。"ActiveSheet“的更改是作为调用Worksheets.Add方法的办公文档的副作用进行的。

将其更改为mystr = Worksheets("IntlHum").Cells(x, 1)可能会有所帮助。

但我的答案是学习如何使用Excel调试,包括"step into (F8)",“立即打印东西的窗口”。

这是任何严肃的Excel必须学习的工具,也是用于排除代码故障的工具。

Excel VBA (和Visual一般)不是为计算机科学家设计的,而是为“大众”设计的,所以您应该很容易(在学习了一些必要的“行话”之后)找到自己的路。

您应该能够找到许多教程资源,以匹配您目前的技能使用谷歌。作为这样的资源,您可以尝试使用http://www.excel-easy.com/vba/examples/debugging.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24112553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档