gpt4 book ai didi

excel - 有没有办法让程序/宏等待第二个工作簿打开?(VBA)

转载 作者:行者123 更新时间:2023-12-04 20:49:08 25 4
gpt4 key购买 nike

我目前正在开发 VBA 中的一个程序,该程序从服务器打开工作簿并从某些单元格获取信息。
因为信息的位置总是不同的,所以我使用了很多参数。
我遇到的问题是程序的移动速度比它打开第二个工作簿的速度要快,并且它的变量不包含任何内容或正确的地址,它可能会获取当前工作簿的地址。
我尝试使用 Application.Wait Now + TimeSerial(0, 0, 15) 但没有运气。感觉就像等待也停止打开第二个工作簿,因为我得到超出范围的错误并且在它打开第二个工作簿之后。
使用 F8 运行程序时,它工作得很好。我让它直到新工作簿打开,然后运行我设置新工作簿地址的下一行。
使用本地文件可以正常工作,无需等待
试图更清楚:使用 F8 运行代码时,超链接中的工作簿会在大约 5-8 秒内打开,但是当我使用 F5 运行它时
wkb.FollowHyperlink 命令似乎失败,在接下来的步骤中返回错误,因为 wkb_activ = ActiveWorkbook 将与我启动宏的工作簿(应该接收信息的工作簿)相同。即使我等待超过一分钟,超链接也不会打开工作簿。当我关闭错误消息时,文件会打开。
我愿意接受任何建议。
谢谢
这是打开工作簿的代码,变量 col_index 是一个数字,而 sheet_index 是第一个工作簿中获取信息的工作表的变量。

For i = 2 To lastrow  

If IsEmpty(sheet_index.Cells(i, col_index).Value) Then
End
Else
wkb.FollowHyperlink Address:=sheet_index.Cells(i, col_index).Value, NewWindow:=True
Application.Wait Now + TimeSerial(0, 0, 15)
Set wkb_activ = ActiveWorkbook
End If

最佳答案

我找到了解决方案。我们创建了一个带有循环的新 Sub,在该循环中它什么都不做,直到计时器大于我们选择的值。这是代码:

Sub time(total) 
starting_time = Timer
Do
DoEvents
Loop Until (Timer - starting_time) >= total
End Sub
在主 Sub 中,我们为 30 秒计时器添加了 time(30)。
wkb.FollowHyperlink Address:=sheet_index.Cells(i, col_index).Value NewWindow:=True 
time (30)
Set wkb_activ = ActiveWorkbook

关于excel - 有没有办法让程序/宏等待第二个工作簿打开?(VBA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68937326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com