VBA - 从 Internet Explorer 的框架通知栏中选择另存为

2024-05-04

我正在尝试通过以下方式下载另存为的文件框架通知栏的互联网浏览器。 然而,经过大量搜索后,我只找到了点击解决方案save在框架通知栏上。 到目前为止,我一直在尝试另存为示例站点上的文件:

http://www.tvsubtitles.net/subtitle-114117.html http://www.tvsubtitles.net/subtitle-114117.html

使用以下代码:

' Add referenses
' Microsoft Internet Controls
' Microsoft HTML Object Library
' UIAutomationClient (copy file from C:\Windows\System32\UIAutomationCore.dll to Documents Folder)

#If VBA7 Then
    Private Declare PtrSafe Function FindWindowEx _
        Lib "user32" _
        Alias "FindWindowExA" ( _
        ByVal hWnd1 As LongPtr, _
        ByVal hWnd2 As LongPtr, _
        ByVal lpsz1 As String, _
        ByVal lpsz2 As String) _
        As LongPtr
#Else
    Private Declare Function FindWindowEx _
        Lib "user32" _
        Alias "FindWindowExA" ( _
        ByVal hWnd1 As Long, _
        ByVal hWnd2 As Long, _
        ByVal lpsz1 As String, _
        ByVal lpsz2 As String) _
        As Long
 #End If

Sub downloadfilefromeie()

    Dim subpage As InternetExplorer
    Dim objpage As HTMLDocument
    Dim o As CUIAutomation
    Dim h As LongPtr
    Dim fnb As LongPtr
    Dim e As IUIAutomationElement
    Dim iCnd As IUIAutomationCondition
    Dim Button As IUIAutomationElement
    Dim InvokePattern As IUIAutomationInvokePattern
    Dim strBuff As String
    Dim ButCap As String

    Set objshell = CreateObject("Shell.Application")
    Set objallwindows = objshell.Windows
    Set subpage = New InternetExplorer
    For Each ow In objallwindows
        'MsgBox ow
        If (InStr(1, ow, "Internet Explorer", vbTextCompare)) Then
            'MsgBox ow.Hwnd & "  " & ow & "   " & ow.locationURL
            If (InStr(1, ow.locationURL, "tvsub", vbTextCompare)) Then
                Set subpage = ow
            End If
        End If
    Next
    Set objpage = New HTMLDocument
    If subpage Is Nothing Then
    Else
        Set objpage = subpage.Document
        'Debug.Print objpage
        'objpage.getElementById("content").Click
        Set dl = objpage.getElementsbyclassname("subtable")
        Set dltable = dl(0).FirstChild.ChildNodes
        Set dlrow = dltable(10).getElementsByTagName("a")(2)
        dlrow.Click
        While objpage.ReadyState <> "complete"
            DoEvents
        Wend
    End If
    Application.Wait (Now() + TimeValue("0:00:05"))
    Set o = New CUIAutomation
    h = subpage.Hwnd
    fnb = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString)
    If fnb = 0 Then Exit Sub
    'Debug.Print "type of fnb is " & TypeName(fnb)
    Set e = o.ElementFromHandle(ByVal fnb)
    'Debug.Print "type of e is " & TypeName(e)
    Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "Save")
    Set Button = e.FindFirst(TreeScope_Subtree, iCnd)
    'Debug.Print "type of Button is " & TypeName(Button)
    Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
    'Debug.Print "type of InvokePattern is " & TypeName(InvokePattern)
    InvokePattern.Invoke

End Sub

我尝试过改变"Save" to "Save as"但它不起作用。我的猜测是,我需要以某种方式能够先单击拆分按钮上的箭头,然后再访问“另存为”按钮,但我没有成功做到这一点。 如果有人可以提供解决方案,我将不胜感激。


我尝试简单地通过链接下载文件http://www.tvsubtitles.net/download-114117.html http://www.tvsubtitles.net/download-114117.html,可以在网页上找到http://www.tvsubtitles.net/subtitle-114117.html http://www.tvsubtitles.net/subtitle-114117.html,它对我有用,这是代码:

Sub Test_download_tvsubtitles_net()

    DownloadFile "http://www.tvsubtitles.net/download-114117.html", ThisWorkbook.Path & "\download-114117.zip"

End Sub

Sub DownloadFile(sUrl, sPath)

    Dim aBody

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", sUrl, False
        .Send
        aBody = .responseBody
    End With
    With CreateObject("ADODB.Stream")
        .Type = 1 ' adTypeBinary
        .Open
        .Write aBody
        .SaveToFile sPath, 2 ' adSaveCreateOverWrite
        .Close
    End With

End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA - 从 Internet Explorer 的框架通知栏中选择另存为 的相关文章

  • 无法使用 BeautifulSoup 和 Requests 抓取下拉菜单

    我想抓取百年灵网站上的产品页面以获取各种信息 示例页面 https www breitling com gb en watches navitimer b01 chronograph 46 AB0127211C1A1 https www b
  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p
  • Confluence:使用 VBA 更新现有页面

    我尝试使用 VBA 更新 Confluence 页面 我的想法是使用REST API加载页面内容 修改内容然后上传修改后的版本 这是我的代码 Private Sub TestRESTApi Dim uname As String uname
  • 无法将 Excel 值的类型“double”转换为“string”

    我正在加载 Excel 文件 如网络上许多地方所示 OpenFileDialog chooseFile new OpenFileDialog chooseFile Filter Excel files xls xlsl xls xlsx i
  • Apache poi setformula 不适用于 SE

    我正在尝试在 XSSFCell With POI 中设置公式 Cell setFormula SE D87 0 D80 D87 错误是 名称 SE 在当前工作簿中完全未知 Why 看起来您正在尝试创建一个IF公式 我发现这一页 http w
  • 使用 pythoncom 在 Python 进程之间编组 COM 对象

    我希望有人可以帮助我从 Python 进行编组跨进程调用到 Excel 我有一个通过 Python 启动的 Excel 会话 我知道当需要从单独的 Python 进程访问它时 该会话将会启动并运行 我已经使用编组让一切按预期工作CoMars
  • EPPlus Excel 行高不一致

    我已经使用 EPPlus 生成了一个 excel 文件 在 MS Office 2007 中一切似乎都很完美 但客户端使用的是 MS Office 2010 2013 并且在第 29 行之后未设置行高 这是一个非常奇怪的问题 我已经尝试了
  • 在Google电子表格中划分整列

    我是 Google 电子表格的一个相对较新的用户 我希望 B 列中的每个单元格都是 A 列 同一行 中内容除以 5 的结果 B1 B2 B3 等 商 应为 A1 A2 A3 等 被除数 除以 5 除数 在示例中 B1 A1 5 我知道一项一
  • 如何使用VBA根据条件删除Excel中的行?

    我目前正在构建一个宏来格式化数据表并删除不适用的数据行 具体来说 我希望删除列 L ABC 的行以及删除列 AA DEF 的行 到目前为止 我已经实现了第一个目标 但还没有实现第二个目标 现有代码是 Dim LastRow As Integ
  • css 适用于 Firefox/Chrome,但不适用于 IE

    我有这个 HTML 和 css 在 chrome firefox 中工作正常 但在 IE 上 标题布局超出了位置 并且悬停时未显示子菜单 您能帮忙吗
  • 定义 js-xlsx 单元格范围

    我正在尝试使用 js xlsx 读取 Excel 值 我可以使用以下代码从工作簿工作表中获取单元格值 if typeof require undefined XLSX require xlsx var workbook XLSX readF
  • 如何使用 BeautifulSoup 从表中选择特定行?

    So I have a question related to a previous question but I realized I needed to go one level more to get an 11 digit NDC
  • IE 中的 HR 标签 - 删除边框

    在除 IE7 及更低版本之外的其他浏览器中 hr 在 hr 标签周围显示边框 但我不希望它出现 我已经尝试过这个解决方案 但它周围似乎仍然有边框 它看起来像这样 我该如何摆脱它 See http webdesign about com od
  • 覆盖内网兼容模式IE8

    默认情况下 IE8 强制 Intranet 网站进入兼容模式 我尝试将元标头更改为 IE8 但它不承认元标头 仅使用浏览器设置 有谁知道如何禁用此功能 可以覆盖内网中的兼容模式 对于 IIS 只需将以下代码添加到 web config 中
  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru
  • 使用 MID、LEN 和 FIND 函数提取单元格文本的某些部分?

    我有一份 Excel 作业 但我陷入了最后部分 我被要求使用 MID LEN 和 FIND 来提取单元格内的特定字符串 我非常了解每个人的工作方式 将这三者结合起来并让它们发挥作用是我遇到的问题 我需要将城市与地址的其余部分分开 然后将其显
  • Excel工作簿关闭后反复打开

    我使用了 Application ontime 方法来调度一些宏 关闭工作簿后 它会一次又一次地打开 为了解决这个问题 我在工作簿上设置了另一个事件 BeforeClosed 现在它显示运行时错误 1004 Object Applicati
  • 所以,我有 6 个“主”文件,然后分为 40 个单独的文件

    我将简要描述我想要的内容 我有 6 个 主 文件 每个文件包含 40 个工作表 如下所示 AG 工作簿有 HR Gp 1 到 HR Gp 40 ER 工作簿有 FB Gp 1 到 Gp 40 等 所有工作表都已 平坦 我已经成功创建了一个适
  • Excel VBA - 添加自定义数字格式

    我有一个在 Excel 外部生成的文件 其中包含许多百分比 所有这些百分比都有一位小数 当导入到 Excel 中时 Excel 会在百分比中添加第二位小数 这似乎是 Excel 中百分比的某种默认格式 它只是添加了一个 0 我想将所有两位小
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr

随机推荐

  • 无法解析:com.android.support:recyclerview-v7:28.1.1

    我正在尝试使用 RecyclerView 并添加了这一行implementation com android support recyclerview v7 28 0 0 alpha3 to my build gradle app 但它给出
  • 使用 git-cvsserver 和 CVS 工作副本获取 commitid 或“git描述”

    我有一些自动化工具可以通过以下方式访问 git 存储库cvs and git cvsserver 我希望这些工具能够看到他们签出的内容的提交 ID 这是否记录在CVS元数据目录 None
  • 如何在两个 960.gs 框之间添加垂直线?

    我正在使用 960 gs 网格系统进行设计 在两个盒子之间添加一条细细的分隔垂直线的最佳方法是什么 宽度和颜色应该是可调的 我的计划是定义几个具有绝对位置和背景颜色的 div 类 每个可能的位置对应一个 并使用 JQuery 确保它与周围的
  • C++ 私有和受保护的虚拟方法

    似乎最好将虚拟方法设为私有 以便分离以下两个客户端的接口 1 实例化对象并调用方法的客户端 2 从该类派生并可能想要重写该方法的客户端 简而言之 第一个客户端不需要知道方法是否是虚拟的 他将调用基类公共非虚拟方法 该方法又将调用私有虚拟方法
  • 如何将 char * 转换为 BSTR?

    如何将 char 从 C dll 传递到 VB 这是示例代码 void Cfunc char buffer int len BSTR buf bstr SysAllocString BSTR buffer VBptr VBfunc buf
  • 进行 URL 重写

    当我点击网站上给定条目的评论部分时 URL 如下所示 http www com comments index php submission Portugal 20Crushes 20North 20Korea submissionid 62
  • 运行玩笑测试时,Firebase 在signInAnonymously() 上抛出“auth/network-request-failed”

    我正在使用 firebase 为我的应用程序 使用 create react app 构建 编写一些测试 并且我正在尝试匿名登录我的测试数据库 但认证失败 然而 所有其他 Firebase 操作 CRUD 都工作得很好 我还可以从在浏览器中
  • JavaFX - 如何检测 Windows 注销/关闭请求?

    我有一个应用程序必须在退出时处理一些方法 但是 当用户在没有先关闭我的应用程序的情况下关闭 Windows 时 Windows 会终止该应用程序并且不会运行关闭方法 如何检测用户何时请求关闭或注销 Windows 我需要运行的方法需要几毫秒
  • 使用 ffmpeg 将 h.264 avi 容器转换为 mp4

    我想使用 ffmpeg 将 h 264 avi 容器转换为 mp4 容器 我发现这个有效 ffmpeg i myfile avi vcodec copy myfile mp4 ffmpeg version N 51169 gcedf276
  • 服务无法放置任务

    好吧 我不知道在哪里可以解决这个问题 我正在尝试启动一个堆栈 其中有一个在 ECS 中运行的基本应用程序 我将在下面展示云信息 但我不断得到 服务 sos ecs SosEcsService 1RVB1U5QXTY9S 无法放置任务 因为没
  • 初始化 FingerpringManager.Crypto 对象,获取 AndroidKeyStore 提供程序不支持的加密原语?

    我使用的是安卓FingerPrintManagerAPI 并使用 KeyPairGenerator 创建密钥对 我想用公钥加密密码 然后在用户通过输入指纹进行身份验证时解密 但是一旦我运行我的项目 它就会崩溃并给出 引起原因 java la
  • 在最后(或第四次)出现“.”时分割字符串分隔符

    我喜欢按如下方式分隔字符串 给定以下字符串 Column 1 10 80 111 199 1345 127 0 0 1 3279 我想在最后一个 之后分隔数字 这将得到以下输出 Column 1 Column 2 10 1 12 5 134
  • Opencart 2.2.0 启用按制造商搜索

    我正在使用 OC 2 2 0 并一直在努力解决以下问题 示例 我在标题搜索中输入西门子 然后单击 显示所有结果 我的搜索页面将显示所有结果 问题是 结果列表仅包含名称中包含西门子的产品 我需要的是展示all 搜索结果列表中属于该制造商的产品
  • AJAX Webmethod 调用在 MVC3 上返回 404

    我一直在使用 EXTJS 4 并通过 AJAX 调用 aspx 页面代码隐藏上的 Webmethod 来加载我的商店 此方法适用于我的所有项目 直到我尝试将 EXTJS 4 工作移植到 MVC3 项目中 我的电话现在返回 404 关键部分是
  • stdClass 类的对象无法转换为字符串

    我现在在使用 PHP 时遇到问题 收到此错误 Object of class stdClass could not be converted to string当我在我的网站中运行这部分代码时发生错误 function myaccount
  • 列表:Count 与 Count() [重复]

    这个问题在这里已经有答案了 给定一个列表 首选哪种方法来确定内部元素的数量 var myList new List
  • 从控制器传递 gsp 参数

    我如何通过不是域类实例的控制器将参数传递到groovy服务器页面 您将参数放入返回给 GSP 的模型对象映射中 例如 def index def hobbies basketball photography render view inde
  • 如何在 Django 查询中动态提供查找字段名称? [复制]

    这个问题在这里已经有答案了 我想在 Django 模型的几个字段中查找某个字符串 理想情况下 它会类似于 keyword keyword fields foo bar baz results for field in fields look
  • jQuery 函数在不应该运行的时候运行

    我有一个函数 仅当宽度小于特定值时才需要运行 我已经这样做了if window width lt n 但当宽度大于 n 时 该函数也会运行 The if if window width lt n 由于背景颜色发生变化 浅灰色 1000px
  • VBA - 从 Internet Explorer 的框架通知栏中选择另存为

    我正在尝试通过以下方式下载另存为的文件框架通知栏的互联网浏览器 然而 经过大量搜索后 我只找到了点击解决方案save在框架通知栏上 到目前为止 我一直在尝试另存为示例站点上的文件 http www tvsubtitles net subti