如何使用 Vba 将打开的浏览器中选定的文本导入 Excel 工作表?

问题描述 投票:0回答:2

我有一个手动使用的任务。我必须从 Excel 切换到浏览器(例如 chrome、Firefox 或 Microsoft Edge)并复制文本(已选择)并将其作为 HTML 粘贴到 Excel 工作表中。我应该注意的是,网页是打开的并且文本始终处于选中状态。 如何使用 VBA 自动完成此任务? 非常感谢你

步骤如下:转到浏览器 - CTRL+C - 返回 Excel - 粘贴为 HTML

excel vba
2个回答
0
投票

试试这个。请注意,您无法使用 F8 单步执行此代码,因为这会将焦点放在 VB 编辑器上...

Sub Tester()
    Dim c As Range
    
    Set c = Selection
    AppActivate "Google Chrome" 'activate Chrome
    SendKeys "^c"  'copy any selected text in the active tab
    DoEvents
    AppActivate Application.Caption 'back to Excel...
    ThisWorkbook.Activate
    c.Parent.PasteSpecial Format:="HTML", Link:=False, _
                DisplayAsIcon:=False

End Sub

不过,您必须从 Excel 运行此程序,因此这种方法可能没有太大好处(您可以在切换到 Excel 之前轻松地按 Crl+C,然后粘贴)


0
投票

以下示例是从特定网页托管的 HTML 表中检索数据。您可以将此示例应用于任何其他 HTML 元素。您可以通过右键单击网页然后选择“查看页面源”选项来识别包含您要查找的数据的 HTML 元素。

第一步,您需要将对以下库的引用添加到您的 VBA 项目中:

  • Microsoft HTML 对象库 ( C:\Windows\System32\mshtml.tlb )
  • Microsoft XML,v6.0 (C:\Windows\System32\msxml6.dll)

Sub RetrieveWebData()

Dim xhr As MSXML2.XMLHTTP60
Dim Doc As MSHTML.HTMLDocument
Dim DataTable As HTMLTable: Dim DataRow As HTMLTableRow   

Set xhr = New MSXML2.XMLHTTP60

xhr.Open "GET", "Your Webpage URL Here", False
xhr.send

If xhr.readyState = 4 And xhr.Status = 200 Then
   Set Doc = New MSHTML.HTMLDocument
   Doc.body.innerHTML = xhr.responseText
Else
    MsgBox "Error" & vbNewLine & "Ready state: " & xhr.readyState & vbNewLine & "HTTP request status: " & xhr.Statuse                
End If

Set DataTable = Doc.getElementsByClassName("Class Name Here")(0)

If Not DataTable Is Nothing Then
   'loop through each row
   For Each DataRow In DataTable.Rows
       'you can use DataRow.Cells(index).innerText to get the value
       'more codes here
   Next
End If

Set xhr = Nothing
Set Doc = Nothing

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.