首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA:循环访问DIV内容-粘贴到单个单元格中

Excel VBA:循环访问DIV内容-粘贴到单个单元格中
EN

Stack Overflow用户
提问于 2016-12-19 04:49:11
回答 0查看 489关注 0票数 1

我在Stack Exchange上找到了一些代码,并且能够根据我的需要修改它95%的方式,但最后一个问题不断出现,父DIV中的所有DIV粘贴到一个单元格中,我希望它们发布到我的工作表中的单个单元格。代码来自堆栈溢出用户"Portland Runner“,原始帖子可以在here上找到。我遇到的HTML看起来像这样:

代码语言:javascript
复制
<div class="right-header">
 <div>Entry 1</div>
 <div>Entry 2</div>
 <div>Entry 3</div>
 <div>Entry 4</div>
 <div>Entry 5</div>
 <div>Entry 6</div>
</div>

子DIV没有ID、类或样式,只有由冗长的DIV标记包围的信息。所有这些都被转储到一个单元格中,我希望将其转储到Al (Entry 1)、B1 (Entry 2)、C1 (Entry 3)等。原始代码如下:

代码语言:javascript
复制
Sub extract()
Dim IE As InternetExplorer
Dim html As HTMLDocument

Set IE = New InternetExplorerMedium
IE.Visible = False
IE.Navigate2 "C:\Users\john\Documents\Test.html"

' Wait while IE loading
Do While IE.Busy
    Application.Wait DateAdd("s", 1, Now)
Loop

Set html = IE.document
Set holdingsClass = html.getElementsByClassName("right-header")
Dim results As Variant
   results = Split(holdingsClass(0).textContent, vbLf)

   cntr = 1
   For i = LBound(results) To UBound(results)
       If Trim(results(i)) <> "" Then
           Select Case Right(Trim(results(i)), 1)
               Case "<div>"
                   Range("B" & cntr) = CStr(Trim(results(i)))
               Case "%"
                   Range("C" & cntr).Value = Trim(results(i))
                   cntr = cntr + 1
               Case 0
                   Range("C" & cntr).Value = Trim(results(i))
               Case Else
                   Range("A" & cntr).Value = Trim(results(i))
           End Select
       End If
   Next i
Sheets("Sheet3").Range("A1").Value = holdingsClass(0).textContent

'Cleanup
IE.Quit
Set IE = Nothing
End Sub

谢谢你的帮助!

EN

回答

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

https://stackoverflow.com/questions/41212731

复制
相关文章

相似问题

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