如何复制 svg 图形的属性(从 html 到 excel)
How to copy attribute of svg graphic (from html to excel)
我创建了一个宏,可以从网站在线基地(使用他们的 PIN 码)找到人,我想将他们的一些信息复制到 excel(例如他们的姓名、状态等)。
搜索结果是 table,其中包含文本和对象 (svg),我在将对象复制到 excel 时遇到问题。
搜索结果如下所示:
<td data-label="Full name">Name</td>
<td data-label="Status" class="results-status">
<svg role="presentation"><use xlink:href="/static/img/sprite.svg#status-caution"></use></svg>
</td>
<td data-label="Location">UK</td>
<td data-label="Details"></td>
所以我写了这个:
Set elements = doc.getElementsByTagName("td")
Cells(i, 1).Value = elements(0).innerText
Cells(i, 3).Value = elements(1).innerText
Cells(i, 4).Value = elements(2).innerText
Cells(i, 5).Value = elements(3).innerText
不幸的是,我没有从 elements(1) 中得到任何东西。我猜它不起作用,因为这是一个对象而不是文本。
我必须从第 2 行获取状态信息 (/static/img/sprite.svg#status-caution),但我不知道该怎么做.我也试过 img = elements(1).getAttribute()
但 msgbox(img) 只显示了这个:[native code]
请试试这个:
Cells(i, 3).Value = elements(1).Children(0).Children(0).getAttribute("xlink:href")
解释:
因为元素设置为doc.getElementsByTagName("td")
,标签名"use"在二级以下,加上Children(0).Children(0).
或firstElementChild.firstElementChild
得到href
.
elements(1).Children(0).Children(0).href
什么也得不到,取而代之的是用.getAttribute("xlink:href")
代替.href
.
或者另一个解决方案是:
Set elements = doc.getElementsByClassName("results-status")
Cells(i, 3).Value = elements(0).firstElementChild.firstElementChild.getAttribute("xlink:href")
Attached screenshot of working code and tested
我创建了一个宏,可以从网站在线基地(使用他们的 PIN 码)找到人,我想将他们的一些信息复制到 excel(例如他们的姓名、状态等)。 搜索结果是 table,其中包含文本和对象 (svg),我在将对象复制到 excel 时遇到问题。 搜索结果如下所示:
<td data-label="Full name">Name</td>
<td data-label="Status" class="results-status">
<svg role="presentation"><use xlink:href="/static/img/sprite.svg#status-caution"></use></svg>
</td>
<td data-label="Location">UK</td>
<td data-label="Details"></td>
所以我写了这个:
Set elements = doc.getElementsByTagName("td")
Cells(i, 1).Value = elements(0).innerText
Cells(i, 3).Value = elements(1).innerText
Cells(i, 4).Value = elements(2).innerText
Cells(i, 5).Value = elements(3).innerText
不幸的是,我没有从 elements(1) 中得到任何东西。我猜它不起作用,因为这是一个对象而不是文本。
我必须从第 2 行获取状态信息 (/static/img/sprite.svg#status-caution),但我不知道该怎么做.我也试过 img = elements(1).getAttribute()
但 msgbox(img) 只显示了这个:[native code]
请试试这个:
Cells(i, 3).Value = elements(1).Children(0).Children(0).getAttribute("xlink:href")
解释:
因为元素设置为
doc.getElementsByTagName("td")
,标签名"use"在二级以下,加上Children(0).Children(0).
或firstElementChild.firstElementChild
得到href
.elements(1).Children(0).Children(0).href
什么也得不到,取而代之的是用.getAttribute("xlink:href")
代替.href
.
或者另一个解决方案是:
Set elements = doc.getElementsByClassName("results-status")
Cells(i, 3).Value = elements(0).firstElementChild.firstElementChild.getAttribute("xlink:href")
Attached screenshot of working code and tested