如何在自动化打开时停止Excel工作簿闪烁?
|
我正在使用带有工作簿路径的GetObject来创建新的或获取现有的Excel实例。如果它正在捕获现有的用户创建的实例,则该应用程序窗口可见;如果有问题的工作簿路径已关闭,它将打开和隐藏,但不会在屏幕上闪烁之前。
Application.ScreenUpdating
无助于此。
我认为我无法使用Win32Api调用LockWindowUpdate,因为我不知道在打开文件之前是要获取还是正在创建。还有其他一些VBA友好方式(即WinAPI)将屏幕冻结足够长的时间以获取对象吗?
编辑:只是为了澄清,因为第一个答案建议使用Application对象...这些是重现此行为的步骤。
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
请注意闪烁,因为Excel在现有实例中打开文件,然后将其隐藏...,因为它是自动化的
但也请注意,在完成闪烁之前,没有应用程序对象可使用。这就是为什么我要寻找更大的API方法来“冻结”屏幕的原因。
没有找到相关结果
已邀请:
3 个回复
荆怖赡
如果那不起作用,请尝试
两者都在这里找到消除VBProject代码期间的屏幕闪烁
嘘崇蔡对
然后是一些样本/测试代码。
希望其他人觉得这有用。
肺鬼耙扮群