如何使用 VBA 在 IE11 中自动弹出“另存为”对话框?

2024-02-20

我正在尝试下载一些有关碳排放的数据。我可以通过 URL 预加载包含相关设置的页面。 它加载正常,我可以通过其 ID 单击确定按钮,然后在底部看到 IE11 - 打开/保存/取消对话框。我已经尝试了使用 FindWindows (#32770) 的所有建议以及非常不可靠的发送密钥。有人可以建议操作此对话框的代码,或者检查网页上的 HTML 以查看是否可以直接下载?

Dim htm As Object
Dim IE As Object
Dim Doc As Object

Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate "http://ec.europa.eu/environment/ets/exportEntry.do?form=accountAll&permitIdentifier=&accountID=&installationIdentifier=&complianceStatus=&account.registryCodes=CY&primaryAuthRep=&searchType=account&identifierInReg=&mainActivityType=&buttonAction=&account.registryCode=&languageCode=en&installationName=&accountHolder=&accountStatus=&accountType=&action=&registryCode="
Do While IE.readystate <> 4: DoEvents: Loop
Set Doc = CreateObject("htmlfile")
Set Doc = IE.document
Doc.getelementbyID("btnOK").Click [embed=file 884739]

'I need code here which clicks the save as button as save the file as C:\temp.xml

Set IE = Nothing

考虑这个例子:

Option Explicit

Sub Test()
    Dim strExportURL As String
    Dim strFormData As Variant
    Dim strContent As String
    Dim arrRespBody() As Byte

    ' build exportURL parameter
    strExportURL = Join(Array( _
        "permitIdentifier=", _
        "accountID=", _
        "form=accountAll", _
        "installationIdentifier=", _
        "complianceStatus=", _
        "account.registryCodes=CY", _
        "primaryAuthRep=", _
        "searchType=account", _
        "identifierInReg=", _
        "mainActivityType=", _
        "buttonAction=", _
        "account.registryCode=", _
        "languageCode=en", _
        "installationName=", _
        "accountHolder=", _
        "accountStatus=", _
        "accountType=", _
        "action=", _
        "registryCode=" _
    ), "&")

    ' build the whole form data
    strFormData = Join(Array( _
        "languageCode=en", _
        "exportURL=" & EncodeUriComponent(strExportURL), _
        "form=accountAll", _
        "exportType=1", _
        "OK=Ok" _
    ), "&")

    ' POST XHR to retrieve the content
    With CreateObject("Microsoft.XMLHTTP")
        .Open "POST", "http://ec.europa.eu/environment/ets/export.do", False
        .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .Send strFormData
        arrRespBody = .ResponseBody
        ' strRespText = .ResponseText
        ' strRespHeaders = .GetAllResponseHeaders
        ' strStatus = .Status
    End With

    ' some processing examples

    ' convert to string
    strContent = BinaryToText(arrRespBody, "utf-8")
    ' replace LF symbols with CRLF for line breaks to be displayed right
    strContent = Replace(strContent, vbLf, vbCrLf)
    ' show in notepad
    ShowInNotepad strContent

    ' save to temp.xml file on the desktop folder
    SaveBinaryToFile arrRespBody, CreateObject("WScript.Shell").SpecialFolders.Item("Desktop") & "\temp.xml"

End Sub

Function EncodeUriComponent(sText)
    With CreateObject("ScriptControl")
        .Language = "JScript"
        EncodeUriComponent = .Run("encodeURIComponent", sText)
    End With
End Function

Sub ShowInNotepad(strToFile)
    Dim strTempPath
    With CreateObject("Scripting.FileSystemObject")
        strTempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & .GetTempName
        With .CreateTextFile(strTempPath, True, True)
            .WriteLine (strToFile)
            .Close
        End With
        CreateObject("WScript.Shell").Run "notepad.exe " & strTempPath, 1, True
        .DeleteFile (strTempPath)
    End With
End Sub

Function BinaryToText(arrBytes() As Byte, strCharSet As String)
    With CreateObject("ADODB.Stream")
        .Type = 1 ' adTypeBinary
        .Open
        .Write arrBytes
        .Position = 0
        .Type = 2 ' adTypeText
        .Charset = strCharSet
        BinaryToText = .ReadText
        .Close
    End With
End Function

Sub SaveBinaryToFile(arrBytes() As Byte, strPath As String)
    With CreateObject("ADODB.Stream")
        .Type = 1 ' adTypeBinary
        .Open
        .Write arrBytes
        .SaveToFile strPath, 2 ' adSaveCreateOverWrite
        .Close
    End With
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 VBA 在 IE11 中自动弹出“另存为”对话框? 的相关文章

  • 通过 Excel / VBA 调用 DLL 中的 C++ 函数在传递双参数时生成异常

    我试图通过 DLL 在 Excel VBA 中使用 C C 静态函数 我在 VS17 中调试时遇到异常 我怀疑这是参数传递方式的问题 它是双精度 EXCEL EXE 中 0x00007FFA28BBA14F kernel32 dll 处抛出
  • 返回条件格式化单元格内部颜色的函数

    我想要一个返回条件格式单元格颜色索引值的函数 它用于检查一行中的多个单元格 如果它们使用条件格式突出显示 则需要执行操作 检查单元格中是否有颜色比创建覆盖条件的组合条件公式更简单所有细胞的 或者说我是这么想的 尽管代码在消息框中有效 但下面
  • Powershell - 在不安装 Excel 的情况下将 CSV 转换为 XLS

    我有一台自动生成报告的服务器 报告采用 CSV 格式 我需要能够直接加密文件 无需第三方压缩 无 WinZIP 或 WinRAR 我认为最好的想法是将 CSV 转换为 XLS 然后通过 Powershell 密码保护 XLS 文件 不幸的是
  • 如何修复日期过滤器 VBA,因为它没有拾取我范围内的所有日期

    我正在尝试创建一个过滤器来过滤掉我选择的日期内的所有日期 我选择的日期将始终反映整个月 例如 如果我需要 2019 年 5 月的数据 我将输入开始日期为 01 05 2019 结束日期为 31 05 2019 我的数据过滤器将需要选取经过我
  • 如何隐藏组合框下拉列表中的列?

    我正在 Excel 用户窗体中构建一个 ComboBox 该用户窗体从 Access 表中获取其行 我想在下拉列表中向用户显示多个文本字段 但从 ComboBox 返回的值应该是与用户选择的行关联的 ID 号 即 ID 列是绑定列 但我不想
  • 无法删除 Microsoft Access 2003 中的主 -> 子子表单链接

    我在删除访问子报表数据表单中的主 gt 子链接字段时遇到问题 我尝试了各种方法来删除它们 使用子报表的属性窗口以及链接向导 我还从数据库中删除了子报表 然后将现有对象重新导入到新的访问实例中 一旦我重新添加子表单并将其命名为相同的名称 链接
  • 从 GitHub 读取代码作为网页中的文本(原始)

    我正在尝试从我的 GitHub 存储库读取一些源代码 C 语言 以在我的网页中显示为文本 我可以通过以下方式访问原始模式下的代码https raw github com https raw github com 我正在使用 jQuery G
  • Excel 的 VBA - 如何检查范围的交集不为空

    我有两个问题 1 如何检查交集或范围是否不为空 例如 如果我想检查它是否为空 我会写 if application intersect r1 r2 is nothing 但有什么东西是否定虚无的吗 例如 并非没有任何事情不起作用 2 如何比
  • 排除单个浏览器使用 CSS 类

    我想排除 Internet Explorer 使用特定的 CSS 类 这可能吗 Details 我有一个 css 类 看起来像 input type radio checked input type radio hover box shad
  • 了解从 MsgBox 返回的响应代码

    我对编程很陌生 我刚刚开始学习 VBA 和 Excel 我在这个网站上遇到并做了这里的例子 但我对这段代码有疑问 我知道变量是使用 Dim 语句声明的 Message 这里是数据类型为整数的变量 我不太明白的是 这里的 6 和 7 是什么意
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • XHR 可以在readyState=DONE 的情况下多次触发onreadystatechange 吗?

    The W3C spec http www w3 org TR XMLHttpRequest event xhr readystatechange建议以下实施 一些简单的代码可以对通过网络获取的 XML 文档中的数据执行某些操作 funct
  • 如何从 ISI Web of Knowledge 检索有关期刊的信息?

    我正在从事一些预测文章引用计数的工作 我遇到的问题是我需要 ISI Web of Knowledge 中有关期刊的信息 他们逐年收集这些信息 期刊影响因子 特征因子 但无法一次下载所有一年期期刊信息 只有 标记全部 选项 该选项始终标记列表
  • 如何使用 C# 了解 Excel 中的分页符 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 C 创建并格式化 Excel 电子表格 因此我需要格式化 合并单元格 更改字体等 直到第一页的最后 如何知道 Excel 电子
  • 如何将Excel中的每个条目转换为一行“矩阵”表

    我有类似的东西 1 2 3 a x o x b x x o c o o o 并想将其转换成像这样的线 1 a x 1 b x 1 c x 2 a o 2 b x 2 c o 3 a x 3 b o 3 c o 通过使用Excel文档中的公式
  • Silverlight 打印中“对话框必须由用户启动”安全异常的另一个技巧

    当我尝试在 Silverlight 中打印一些内容时 我收到臭名昭著的 对话框必须由用户启动 安全异常 正如您所看到的 该对话框尽可能由用户启动 约翰爸爸也帮不了我太多 http johnpapa net silverlight print
  • (IE 特定)如何确定输入的文本是否比输入元素的宽度长

    这是所有版本 IE 特有的问题 在所有其他浏览器中 当文本溢出时 输入元素的scrollWidth 大于输入元素的clientWidth 有没有办法确定IE中输入字段中的文本超出了输入元素宽度的键 下面是一个检查 clientWidth 与
  • 如何使用Excel的墨迹工具添加手写签名?

    我想在我公司的一些表格中添加手写数字签名 目标是选择一个文档 添加签名 通过使用绘图板 这可以使用 Excel 的墨水工具完成 并将文件作为 PDF 存储在服务器中 这将消除打印然后扫描表格以获得签名的必要性 我使用 Excel 作为文件操
  • VBA 中的 If 和 Or 多个语句

    我想将包含 14 列的 Excel 文件重新分配到正确的列 包含 12 000 行 为此 我必须使用一些 If And Or 语句将数字放入矩阵中 但显然我没有从中得到正确的东西 它使我的所有单元格为零 而具有值的单元格应保留该值 我哪里出

随机推荐

  • C# 如何反序列化嵌入文本中的 xml 标签?

    我正在尝试使用 XmlSerializer 反序列化 NET 的 XML 文档注释的输出 作为参考 xml 文档的输出如下所示
  • 在循环内部还是外部声明变量更好?

    最好这样做 variable1Type foo variable2Type baa foreach var val in list foo new Foo foo x FormatValue val baa new Baa baa main
  • Vim Fugitive:Gblame 重责选项

    我最近一直在使用Fugitive的Gblame 但不太明白 reblame 的作用 有人可以更清楚地描述这些选项的作用吗 reblame at commit reblame at count th first grandparent P r
  • 为什么赋值表达式 [String x = (x = y)] 的变量初始化可以编译?

    这个如何编译才不会报错呢 据我了解 编译器检查变量的类型 在本例中String 然后查看右侧表达式的类型是否对应于变量的类型 或至少是一个子类型 但让我们坚持使用简单的情况String类 因为它是最后的 public class InitC
  • 在实体框架中自定义类型映射

    我正在使用 EF5 Code First 并尝试存储 IPAddress 对象 如果您尝试直接执行此操作 EF 会将其存储为两列 FIELDNAME Address 和 FIELDNAME Scope 不幸的是 这不足以存储 IPv4 地址
  • 寻找基于 Django 类的视图并在单个页面上具有多个表单示例

    我一直在寻找如何使用较新的基于 Django 类的视图方法在一页上显示 2 个独特的表单 有人可以参考一下吗 或者提供一个基本的例子 谷歌并没有因此成为我的 朋友 关键是你甚至不必使用其中之一FormView处理表单的子类 您只需添加手动处
  • BluetoothLEDevice.FromIdAsync 返回 null

    这是用于获取 BLE 设备的 UWP 代码 为什么我在某些设备上得到 bleDevice null 我没有找到任何解释这一点的文档 var devices await DeviceInformation FindAllAsync Bluet
  • Xcode - Segue 问题

    我一直在努力让segue继续工作 我写了以下内容 但由于某种原因 preparesegue 方法不会触发 我已经阅读了其他相关的帖子 但我无法让它启动 而且同样重要的是 我需要的变量没有被传输 m file implementation C
  • jQuery - 检查是否第一次点击

    我有 2 个函数 A 和 B 只需单击一次 div 即可调用 我只需要在第一次单击时调用函数 A 并在单击时调用函数 B 我怎么能这样做呢 更简单的解决方案 element one click function Call A click f
  • 调整 Datagridview 上的 Rowheader 属性

    在 Winforms DataGridView 中 我该如何 删除行标题上的箭头 我需要显示行标题文本 所以我不能简单地设置RowHeadersVisible false 以编程方式调整行标题的宽度 我通过代码设置行标题 因此我需要调整宽度
  • 通过Matplotlib中的OO接口获取图形管理器

    我希望能够获取创建的图形的figure manager 例如我可以使用 pyplot 界面来完成此操作 from pylab import figure plot arange 100 mngr get current fig manage
  • MS Access XML 从文本或流而不是文件导入?

    有什么简单的方法可以完成与 Application ImportXML 等效的操作 但将 XML 作为字符串或文本流而不是文件 在 Access 2003 中 我想将记录插入到一 个包含许多字段的表中 其中包含来自应用程序中不同位置的数据
  • spring资源是文件还是目录?

    我正在使用 spring Resource API 并使用 ResourcePatternResolver 来扫描我的类路径中的文件 在一种情况下 扫描会拾取预构建 jar 中的一些目录和文件以及文件系统上的一些目录和文件 在任何一种情况下
  • AppDomains 与强大的服务器

    经过一些研究后 AppDomains 似乎并不是真正构建托管服务器的工具 根据我的理解 如果创建的AppDomain中存在未处理的异常 如果从创建的AppDomain中的线程抛出异常 托管服务器仍然会崩溃 因此 在这种情况下 如果托管服务器
  • Pandas:将列与数据帧的所有其他列进行比较

    我有一个场景 我有新的受试者正在测试一系列特征 其中结果都是字符串分类值 测试完成后 我需要将新数据集与所有受试者的主数据集进行比较 并寻找给定阈值 例如 90 的相似性 匹配 因此 我需要能够以尽可能最佳的性能对新数据集中的每个新主题与主
  • 使用 Google 日历 API 发送邀请

    我有一个 Java Spring API 我想在其中集成 Google 日历 任务 基本上为两名与会者 用户 创建一个活动并向他们发送邀请 并可选择接受 拒绝 标准 GCalendar 邀请 我在这里尝试了这个例子 https develo
  • 当 super() 被调用时,元类如何与 MRO 列表一起工作?

    我对以下代码示例感到非常困惑 class Meta 1 type def call cls a kw line 1 print entering Meta 1 call print cls line 4 print cls mro line
  • RESTful Web 服务、Spring-WS 有效负载或 Spring 3 MVC REST 控制器采用哪种方式?

    我是初学者Spring Webservices 我正在尝试使用创建合同优先的网络服务spring ws 2 0 我已经做好了web xml MessageDispatcherServlet 配置 我的合约设计 XSD 生成JAXB类和服务实
  • JavaScript 中的 Math.random 和 Web 编程

    根据这个堆栈溢出线程 https stackoverflow com questions 10361466 what algorithm does math random useJavaScript 中的 Math random 取决于浏览
  • 如何使用 VBA 在 IE11 中自动弹出“另存为”对话框?

    我正在尝试下载一些有关碳排放的数据 我可以通过 URL 预加载包含相关设置的页面 它加载正常 我可以通过其 ID 单击确定按钮 然后在底部看到 IE11 打开 保存 取消对话框 我已经尝试了使用 FindWindows 32770 的所有建