如何阻止 Excel 工作簿在自动化打开时闪烁?

2023-12-10

我将 GetObject 与工作簿路径结合使用来创建新实例或获取现有 Excel 实例。如果它正在抓取现有的用户创建的实例,则应用程序窗口是可见的;如果相关工作簿路径关闭,它将打开并隐藏,但不会在屏幕上闪烁之前。Application.ScreenUpdating对此没有帮助。

我不认为我可以使用Win32Api调用LockWindowUpdate,因为我不知道在文件打开之前我是获取还是创建。是否有其他一些 VBA 友好的方法(即 WinAPI)来冻结屏幕足够长的时间以获取对象?

EDIT:只是为了澄清,因为第一个答案建议使用应用程序对象...这些是重现此行为的步骤。 1. 打开 Excel——确保您只运行一个实例——保存并关闭默认工作簿。 Excel 窗口现在可见,但“空” 2.打开Powerpoint或Word,插入一个模块,添加以下代码

Public Sub Open_SomeWorkbook()
    Dim MyObj   As Object
    Set MyObj = GetObject("C:\temp\MyFlickerbook.xlsx")
    'uncomment the next line to see the workbook again'
    'MyObj.Parent.Windows(MyObj.Name).Visible = True'

    'here's how you work with the application object... after the fact'
    Debug.Print MyObj.Parent.Version
End Sub
  1. 请注意 Excel 在现有实例中打开文件然后隐藏它时的闪烁...因为它是自动化的
  2. 但还要注意,在闪烁完成之前,没有可使用的应用程序对象。这就是为什么我正在寻找一些更大的 API 方法来“冻结”屏幕。

Try,

Application.VBE.MainWindow.Visible = False

如果这不起作用尝试

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal ClassName As String, ByVal WindowName As String) As Long

Private Declare Function LockWindowUpdate Lib "user32" _
    (ByVal hWndLock As Long) As Long


Sub EliminateScreenFlicker()
    Dim VBEHwnd As Long

    On Error GoTo ErrH:

    Application.VBE.MainWindow.Visible = False

    VBEHwnd = FindWindow("wndclass_desked_gsk", _
        Application.VBE.MainWindow.Caption)

    If VBEHwnd Then
        LockWindowUpdate VBEHwnd
    End If

    '''''''''''''''''''''''''
    ' your code here
    '''''''''''''''''''''''''

    Application.VBE.MainWindow.Visible = False
ErrH:
    LockWindowUpdate 0&
End Sub

两者都在这里找到消除 VBProject 代码期间的屏幕闪烁

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

如何阻止 Excel 工作簿在自动化打开时闪烁? 的相关文章

  • 使用 SpreadsheetLight 进行行计数

    我正在寻找一个类似于 DataTable Rows Count 的函数 它可以与 SLDocument 一起使用来找出有多少行中有数据 SpreadsheetLight 中有可用的东西吗 还有其他方法可以实现这一目标吗 Brendan SL
  • 如果单元格包含 1 个或多个关键字,则更改不同单元格的值

    我有一个列 其中包含一些字符串描述 例如 Bob davids mowing the lawn tipping cows 此外 我将在不同的工作表或列上列出关键字列表 例如工作关键字列表1 davids work 播放关键字列表 mowin
  • 如何从更高级别启动用户级别的 Exe

    我希望一个进程始终在用户级别运行 当它由以管理员级别运行的安装程序 自定义 而不是 msi 启动时 或者当用户登录时 环顾四周 我不确定这是否可能 最简单的方法是有 2 个进程 一种是普通用户 它启动提升 管理进程 然后管理进程可以使用 I
  • Excel的解析路径

    其实我想问以下问题 对于位于 目录中定义的 PATH 怎么能 我找出这些目录中的哪个 找到了 因为我需要使用 Process Run 从 C 运行 Excel 并且只需指示 Excel 即可正常工作 Windows 似乎知道在哪里可以找到它
  • C# 的 user32 和内核方法列表 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有一个很好的清单来说明我们可以从中进口什么user32 dll and kernel dll并在 C 中使用 我是 Windows A
  • 如何保留每个单元格中合并单元格的值?

    我创建了一个包含合并单元格的工作表 但合并单元格的值仅存储在第一个单元格中 无论如何 为了在每个单元格中保持相同的值 我使用的公式需要它 谢谢 在 Excel 2003 中 此宏执行以下任务 Public Sub UnmergeAndFil
  • 如何计算 WPF 中的非客户端窗口大小?

    WPF 有SystemParameters class http msdn microsoft com en us library system windows systemparameters aspx公开了大量的系统指标 在我的计算机上
  • Excel动态数组运行重复项计数

    我一直在重新设计一些旧的电子表格工具 以便使用 Excel 的较新工具来过滤和格式化动态数据输出动态数组公式 https support microsoft com en us office dynamic array formulas a
  • WebAPI 和 Angular JS Excel 文件下载 - 文件损坏

    我正在 WebAPI 中生成 Excel 文件 我将其 存储 在内存流中 然后放入响应 如下所示 var result new HttpResponseMessage HttpStatusCode OK Content new Stream
  • 是否有任何公式可用于将特定单元格复制指定次数?

    目前我正在处理一份数据 其中我有一个公司名称列表 例如 1 A 2 B 3 C 还有很多 需要的结果是 1 A 2 A 3 A 4 A 5 A 6 B 7 B 8 B 9 B 10 B 11 C 12 C 13 C 14 C 15 C 等等
  • 从嵌入的谷歌地图中提取标记坐标

    对此还很陌生 所以请耐心等待 我需要从嵌入的谷歌地图中提取标记坐标 示例链接是http www picknpay co za store search http www picknpay co za store search我想提取搜索时地
  • CURL 相当于使用 VBA 的 POST JSON 数据

    我知道这与之前提出的一些问题类似 但有些东西仍然对我不起作用 如何执行以下命令 curl X POST data statements json H Content Type application json user username p
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 使用 VBA 在 Access 表中记录计数

    我正在尝试获取表的记录数 如果计数大于 17 则创建一个新表 Dim rst As DAO Recordset strSQL Select from SKUS Set rst db OpenRecordset strSQL If rst R
  • 使用 OpenXML 读取列中的 Excel 工作表数据

    有没有一种方法可以使用 OpenXML SDK 和 C 按列而不是按行读取 Excel 工作表 我已经尝试使用 EPPlus 包 但遇到了一些问题 因为我的应用程序还使用 EPPlus 不支持的 xslm 文件 因此 我需要 OpenXML
  • 关闭工作簿时删除范围,xls vba

    我想要范围 Range A2 G z 关闭工作簿时删除 有人可以帮我处理代码吗 谢谢 凯 这就是我尝试过的 Option Explicit Sub Makro1 insert clipboard Workbooks Pfl SchutzSt
  • Excel 中使用通配符 {*} 进行 Vlookup

    我有下表 现在 我想检查主题是否具有数据中存在的任何文本 col F I used VLOOKUP A2 F F 1 0 但它正在给予 N A Try 公式为B2 SUM COUNTIF A2 F 2 F 3 gt 0 Edit SUM C
  • 参考上一个问题:为什么 VBA 没有加载所有发票详细信息

    除了上一个问题之外 我们在销售发票上仍然存在相同的加载失败问题 下面的 VBA Json 仍然仅加载一行或第一个产品详细信息行 而不是与表中该销售发票合作的所有产品行详细信息 我们希望下面的 VBA 能够根据参数加载发票详细信息 例如 如果
  • 获取Windows下新线程/删除线程的通知

    创建 DLL 时 您可以在 DllMain 函数 DLL THREAD ATTACH DLL THREAD DETACH 中获取有关新线程 退出线程的通知 有没有办法在 非托管 可执行文件中从 Windows 获取这些或等效通知 是的 在您
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些

随机推荐

  • Java,IllegalAccessorError:超类访问检查失败

    我一直在用 Java 开发自己的一个小项目 最近 我编译了它并收到了这个错误 线程 main 中的异常java lang IllegalAccessError 超类访问检查失败 类kr w zeale v1 program core Dat
  • oracle SQL语句中rownum与order by子句结合使用

    以下两个 SQL 语句中哪一个将返回所需的结果集 即 Status 0 且 Starttime 最高的十行 两个语句总是返回相同的结果集吗 开始时间是唯一的 SELECT FROM MyTable WHERE Status 0 AND RO
  • 关闭图形所有子图的轴

    我正在创建大量子图 我想关闭所有子图的轴 目前我正在通过以下方式实现这一目标 fig ax plt subplots 7 len clusters fig subplots adjust wspace 0 top 1 0 bottom 0
  • BAT:基于文件修改日期的 if 语句

    我想查看锁定文件的修改日期是否超过 5 秒前或将来 表明 PC 时钟已改回 我怎么能说 if file modifydate lt now 5 seconds or modifydate gt now 运行命令 a 命令 a 将启动我的 J
  • ServiceController.start() 和 ServiceController.stop() 抛出异常?

    下面的代码抛出异常 我不明白我在代码中犯了什么错误 有人可以帮我弄清楚吗 我认为这是一些担保权问题 如果是这样 我如何向任何用户或应用程序授予以编程方式访问此 Windows 服务的安全权限 Dim sc As New ServiceCon
  • 工具栏中 Android 微调器上的翻转箭头

    我在屏幕底部的工具栏中有一个微调器 但微调器旁边的箭头指向下方 这是违反直觉的 有没有什么快速的方法可以将箭头翻转到向上 如果有帮助的话 微调器的定义如下
  • 如何等待异步完成

    我想运行一些异步工作流程 然后等待它完成后再打印一些结果 例如 let dowork n async do printfn work d n let creatework async for x in 1 5 do Async Start
  • 正则表达式:将 $ 放入 [ ]

    echo tests perl pe s s t g Unmatched in regex marked by lt HERE in m s lt HERE 5 020000 at e line 1 lt gt line 1 我不能放 in
  • 在 Python 中从多列中查找最接近的值并添加到新列

    我有以下数据框 import pandas as pd import numpy as np data index 1 2 3 4 5 A 11 17 5 9 10 B 8 6 16 17 9 C 10 17 12 13 15 target
  • 在功能性 UIScrollView 中使用 UIPanGestureRecognizer 进行平移视图

    问题 我有一个UIScrollView含有一个UIView我希望允许用户使用UIPanGestureRecognizer 为了使其按预期工作 用户应该能够用一根手指平移视图 但是also能够用另一根手指平移滚动视图 两者都可以同时 每个手指
  • 使用 onesignal 向特定用户发送通知

    我在用着一个信号这是我的项目中的第一次 我必须在某些事件上向特定用户 无论用户在 Chrome 或 Android 设备上登录 发送通知 例如 Whatsapp 也会在移动设备和网站上发送通知 并且仅当用户登录时才发送 我已成功向所有人发送
  • 设置 Rails cookie 的开始日期和到期日期

    如何设置 Rails cookie 在特定日期开始和 或过期 摘录自Rails 5 文档 Cookie 是通过 ActionController cookies 读取和写入的 正在读取的 cookie 是与请求一起接收的 cookie 正在
  • 使用正则表达式选择电话号码的变体

    import re s so the 1234 2 1 1919 215 777 9839 1333331234 20 20 2000 A1234567 515 2331129 7654321B 511 231 1134 512 333 1
  • 使用ios将图像转换为gif [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试使用 IOS Xcode 4 5 以编程方式转换 10 张 gif 格
  • 如何将状态栏设置为透明但使导航栏保持黑色?

    正如我的问题所示 我试图弄清楚如何将状态栏颜色设置为透明 同时保持导航栏黑色 自然色 不影响屏幕高度 我参考了这个网站 Android 完全透明的状态栏 部分有效的解决方案之一是 getWindow setFlags WindowManag
  • 致命错误:超出最大执行时间 400 秒

    我有一个 PHP 脚本 在执行长 mysq query 时失败 错误信息是 致命错误 超过了 400 秒的最大执行时间 我在 Windows 上使用 XAMPP 并且更改了 php ini 文件 我的安装中只有一个 将 max execut
  • XMLHttpRequest 无法加载 .... 预检响应具有无效的 HTTP 状态代码 401

    下面是我的服务调用 我正在尝试进行基本的身份验证 我检查了多个博客都找不到解决方案 任何人都可以帮我解决这个问题 因为我收到以下错误 XMLHttpRequest 无法加载 预检响应具有无效的 HTTP 状态代码 401 我也无法在开发人员
  • cURL 给出无法解析主机

    我在新的专用服务器上 但在curl 连接上遇到错误 我试过那个 h curl init curl setopt h CURLOPT HEADER 1 curl setopt h CURLOPT RETURNTRANSFER 1 curl s
  • 如何截取包含视频和画布的 div 的屏幕截图?

    注意 这不是重复的 因为我没有找到任何与截取视频和画布截图相关的问题 并且我尝试了 html2canvas 我们有一个 div 内部包含视频元素和画布 视频用于流式传输 画布用于在视频上绘制任何内容 现在 如果我截取 div 的屏幕截图 它
  • 如何阻止 Excel 工作簿在自动化打开时闪烁?

    我将 GetObject 与工作簿路径结合使用来创建新实例或获取现有 Excel 实例 如果它正在抓取现有的用户创建的实例 则应用程序窗口是可见的 如果相关工作簿路径关闭 它将打开并隐藏 但不会在屏幕上闪烁之前 Application Sc