Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用vba复制已打开IE页面上的所有内容_Excel_Vba_Internet Explorer_Copy Paste - Fatal编程技术网

Excel 使用vba复制已打开IE页面上的所有内容

Excel 使用vba复制已打开IE页面上的所有内容,excel,vba,internet-explorer,copy-paste,Excel,Vba,Internet Explorer,Copy Paste,我知道如何打开一个新的和复制一切 我还知道如何引用已经打开的IE页面 我正在努力从已经打开的internet explorer页面复制 请帮忙 Function GetIE() As Object 'return an object for the open Internet Explorer window, or create new one For Each GetIE In CreateObject("Shell.Application").Windows() 'L

我知道如何打开一个新的和复制一切

我还知道如何引用已经打开的IE页面

我正在努力从已经打开的internet explorer页面复制

请帮忙

Function GetIE() As Object
'return an object for the open Internet Explorer window, or create new one
  For Each GetIE In CreateObject("Shell.Application").Windows() 'Loop to find
    If (Not GetIE Is Nothing) And GetIE.Name = "Internet Explorer" Then Exit For 'Found!
  Next GetIE
  If GetIE Is Nothing Then Set GetIE = CreateObject("InternetExplorer.Application") 'Create
  GetIE.Visible = True 'Make IE window visible

  ' (this is where the code fail) down

        IE.ExecWB 17, 0 '// SelectAll
        IE.ExecWB 12, 2 '// Copy selection
        ActiveSheet.PasteSpecial Format:="Text", link:=False, DisplayAsIcon:=False
        Range("A1").Select
        IE.Quit

End Function
基本上我需要这个代码:使用已经打开的IE窗口,而不是URL

Sub Test() 

    Dim IE As Object 

    Sheets("Sheet3").Select 
    Range("A1:A1000") = "" ' erase previous data
    Range("A1").Select 

    Set IE = CreateObject("InternetExplorer.Application") 
        With IE 
            .Visible = True 
            .Navigate "http://www.aarp.org/" ' should work for any URL
            Do Until .ReadyState = 4: DoEvents: Loop 
        End With 

        IE.ExecWB 17, 0 '// SelectAll
        IE.ExecWB 12, 2 '// Copy selection
        ActiveSheet.PasteSpecial Format:="Text", link:=False, DisplayAsIcon:=False 
        Range("A1").Select 
        IE.Quit 

End Sub

如果您只想打开一个IE窗口,那么可以使用
GetObject()

如果您想获得一个特定的打开窗口(通过URL),则可以执行以下操作:

子测试仪()
模糊的物体
设置IE=GetIE(“http://www.aarp.org/")
如果不是的话,我什么都不是
IE.ExecWB 17,0'//SelectAll
IE.ExecWB 12,2'//复制选择
ActiveSheet.Paste特殊格式:=“文本”,链接:=False,显示图标:=False
范围(“A1”)。选择
即退出
如果结束
端接头
使用此选项:

”获取对现有IE窗口的引用,给定部分URL
函数GetIE(sLocation作为字符串)作为对象
Dim objShell作为对象,objShellWindows作为对象,o作为对象
作为字符串的Dim sURL
作为对象的Dim retVal
设置retVal=Nothing
设置objShell=CreateObject(“Shell.Application”)
设置objShellWindows=objShell.Windows
对于objShellWindows中的每个o
sURL=“”
错误时“继续下一步”,因为可能没有“文档”属性
'检查URL,如果它是您想要的,那么
'将窗口对象指定给返回值并退出循环
sURL=o.document.Location
错误转到0
如果sURL喜欢sLocation&“*”那么
设置retVal=o
退出
如果结束
下一个o
设置GetIE=retVal
端函数

如果你只想打开一个IE窗口,那么你可以使用
GetObject()
来实现

如果您想获得一个特定的打开窗口(通过URL),则可以执行以下操作:

子测试仪()
模糊的物体
设置IE=GetIE(“http://www.aarp.org/")
如果不是的话,我什么都不是
IE.ExecWB 17,0'//SelectAll
IE.ExecWB 12,2'//复制选择
ActiveSheet.Paste特殊格式:=“文本”,链接:=False,显示图标:=False
范围(“A1”)。选择
即退出
如果结束
端接头
使用此选项:

”获取对现有IE窗口的引用,给定部分URL
函数GetIE(sLocation作为字符串)作为对象
Dim objShell作为对象,objShellWindows作为对象,o作为对象
作为字符串的Dim sURL
作为对象的Dim retVal
设置retVal=Nothing
设置objShell=CreateObject(“Shell.Application”)
设置objShellWindows=objShell.Windows
对于objShellWindows中的每个o
sURL=“”
错误时“继续下一步”,因为可能没有“文档”属性
'检查URL,如果它是您想要的,那么
'将窗口对象指定给返回值并退出循环
sURL=o.document.Location
错误转到0
如果sURL喜欢sLocation&“*”那么
设置retVal=o
退出
如果结束
下一个o
设置GetIE=retVal
端函数

我建议您尝试使用下面的代码示例进行测试,它可以帮助您将网页内容从已打开的IE实例复制到Excel工作表中

VBA代码:

Sub demo()

Sheets("Sheet1").Select
Range("A1:A1000") = ""
Range("A1").Select


    Set objShell = CreateObject("Shell.Application")
    IE_count = objShell.Windows.Count
        For x = 0 To (IE_count - 1)
        On Error Resume Next
    
            my_title = objShell.Windows(x).document.Title

            If my_title Like "AARP? Official Site - Join & Explore the Benefits" & "*" Then
                Set IE = objShell.Windows(x)
       
                If Not IE Is Nothing Then
                    IE.ExecWB 17, 0
                    IE.ExecWB 12, 2
                    ActiveSheet.PasteSpecial Format:="Text", link:=False, DisplayAsIcon:=False
                    Range("A1").Select
                    'IE.Quit
                End If
            Exit For
            Else
            End If
        Next

End Sub
输出:


此外,您可以根据自己的要求修改代码示例。

我建议您尝试使用下面的代码示例进行测试,这可能有助于您将网页内容从已打开的IE实例复制到Excel工作表

VBA代码:

Sub demo()

Sheets("Sheet1").Select
Range("A1:A1000") = ""
Range("A1").Select


    Set objShell = CreateObject("Shell.Application")
    IE_count = objShell.Windows.Count
        For x = 0 To (IE_count - 1)
        On Error Resume Next
    
            my_title = objShell.Windows(x).document.Title

            If my_title Like "AARP? Official Site - Join & Explore the Benefits" & "*" Then
                Set IE = objShell.Windows(x)
       
                If Not IE Is Nothing Then
                    IE.ExecWB 17, 0
                    IE.ExecWB 12, 2
                    ActiveSheet.PasteSpecial Format:="Text", link:=False, DisplayAsIcon:=False
                    Range("A1").Select
                    'IE.Quit
                End If
            Exit For
            Else
            End If
        Next

End Sub
输出:


此外,您可以根据自己的要求修改代码示例。

您是否收到错误?问题到底出在哪里?你能做到吗?请详细说明你的问题,问题被编辑成附加@TimWilliams的答案,根据你的评论,你还没有实现它。友好提示:StackOverflow不是“我们为您编码”服务提供商。或者是我的,你有错误吗?问题到底出在哪里?你能做到吗?请详细说明你的问题,问题被编辑成附加@TimWilliams的答案,根据你的评论,你还没有实现它。友好提示:StackOverflow不是“我们为您编码”服务提供商。或者,我的工作表可以添加代码将网站上的所有内容复制到我的工作表中吗?它与您已有的代码相同(甚至
IE
变量的名称也相同)。你试过添加你的代码吗?我正在努力合并它们。我试过了。似乎什么都不管用。我试图完成的事情的崩溃;手动打开IE网站。运行VBA代码,该代码将-复制已打开网站上的所有信息-将其粘贴到我的工作表。-然后关闭IE浏览器。请参见上面的编辑内容\n是否可以添加代码以将网站上的所有内容复制到我的工作表中?它与您已有的代码相同(甚至
IE
变量的名称也相同)。你试过添加你的代码吗?我正在努力合并它们。我试过了。似乎什么都不管用。我试图完成的事情的崩溃;手动打开IE网站。运行VBA代码,该代码将-复制已打开网站上的所有信息-将其粘贴到我的工作表。-然后关闭IE浏览器。请参阅上面的编辑\