| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1616 人关注过本帖
标题:如何判断通过VFP打开的Excel是否处于忙碌状态?
只看楼主 加入收藏
ztx19
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2014-8-22
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:13 
如何判断通过VFP打开的Excel是否处于忙碌状态?
在用VFP对Excel进行操作中,如果Excel处于忙碌状态(如单元格处于活动状态),就会出现“...程序正在忙碌中,因此该操作无法完成。请选择切换至命令,然后更正问题。”的提示,如何判断通过VFP打开的Excel是否处于“忙碌”状态?如果无法判断,如何屏蔽这个提示?

[此贴子已经被作者于2022-7-13 10:18编辑过]

搜索更多相关主题的帖子: 判断 VFP Excel 状态 打开 
2022-07-13 10:09
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:645
专家分:2480
注 册:2018-3-13
收藏
得分:20 
vfp 有三个相关的属性:_vfp.OLERequestPendingTimeout,OLEServerBusyTimeout,OLEServerBusyRaiseError

[此贴子已经被作者于2022-7-13 11:36编辑过]


这家伙很懒,啥也没留下
2022-07-13 11:01
ztx19
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2014-8-22
收藏
得分:0 
以下是引用csyx在2022-7-13 11:01:13的发言:

vfp 有三个相关的属性:_vfp.OLERequestPendingTimeout,OLEServerBusyTimeout,OLEServerBusyRaiseError


我试了一下:
oExcel=Createobject("Excel.application")
oExcel.Workbooks.Add
oExcel.Visible=.T.
oExcel.ActiveSheet.Range('A1').Select   &&单元格激活时,这句出现提示:由于"Microsoft Excel - Book1"程序正在忙碌中,因此该操作无法完成。请选择”切换至“命令,然后更正问题。

?_vfp.OLERequestPendingTimeout   &&返回5000
?_vfp.OLEServerBusyTimeout       &&返回10000
?_vfp.OLEServerBusyRaiseError    &&返回.F.

求详解,谢谢!


[此贴子已经被作者于2022-7-13 12:58编辑过]

2022-07-13 12:52
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:645
专家分:2480
注 册:2018-3-13
收藏
得分:0 
以下是引用ztx19在2022-7-13 12:52:34的发言:
求详解

研读vfp自带的帮助,搜索这些属性。例如:OLERequestPendingTimeout

程序代码:
OLERequestPendingTimeout 属性

指定在发出自动化请求后多长时间显示忙碌消息。运行时读/写。

ApplicationObject.OLERequestPendingTimeout[=nMilliseconds]

 
返回值
nMilliseconds
指定在自动化请求挂起时显示繁忙消息之前必须经过的毫秒数。发生鼠标或键盘事件时会显示忙碌消息。
nMilliseconds 的默认值为 5,000 毫秒。

如果 nMilliseconds 为 0,当自动化请求挂起并且发生鼠标或键盘事件时,不会显示忙碌消息。

适用于:应用程序对象 | _VFP 系统变量

参考
OLEServerBusyRaiseError 属性
OLEServerBusyTimeout 属性


程序代码:
OLEServerBusyRaiseError 属性

指定当自动化请求被拒绝时是否显示错误消息。运行时读/写。

ApplicationObject.OLEServerBusyRaiseError[=lExpression]

 
lExpression 以下设置之一:

.T.  当 OLEServerBusyTimeout 属性指定的毫秒数已过时,不会发生错误并且不会显示忙碌消息。
.F.  (默认)当 OLEServerBusyTimeout 属性指定的毫秒数已过时,将发生错误并显示忙碌消息。


[此贴子已经被作者于2022-7-13 13:12编辑过]


这家伙很懒,啥也没留下
2022-07-13 12:59
ztx19
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2014-8-22
收藏
得分:0 
还是不懂,我这样设了之后,还是显示忙碌消息:
_vfp.OLERequestPendingTimeout=0
2022-07-13 13:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10549
专家分:42993
注 册:2014-5-20
收藏
得分:0 
不清楚你用VFP具体是怎样处理EXCEL表
先查一下是不是VFP引起的异常

2022-07-13 13:59
ztx19
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2014-8-22
收藏
得分:0 
问题解决了!谢谢!!!
oExcel=Createobject("Excel.application")
oExcel.Workbooks.Add
oExcel.Visible=.T.
_vfp.OLEServerBusyRaiseError=.t.
WAIT WINDOW '等待过程中激活Excel表中的一个单元格'
oExcel.ActiveSheet.Range('A1').Select

2022-07-13 15:42
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10549
专家分:42993
注 册:2014-5-20
收藏
得分:0 
回复 7楼 ztx19
测试就这几句也没异常
oExcel=Createobject("Excel.application")
oExcel.Workbooks.Add
oExcel.Visible=.T.
oExcel.ActiveSheet.Range('A1').Select
2022-07-13 15:52
ztx19
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2014-8-22
收藏
得分:0 
以下是引用吹水佬在2022-7-13 15:52:15的发言:

测试就这几句也没异常
oExcel=Createobject("Excel.application")
oExcel.Workbooks.Add
oExcel.Visible=.T.
oExcel.ActiveSheet.Range('A1').Select

oExcel=Createobject("Excel.application")
oExcel.Workbooks.Add
oExcel.Visible=.T.
_vfp.OLEServerBusyRaiseError=.t.  &&如果不加这一句,程序暂停时双击激活Excel一个单元格,再继续程序运行,过一会儿(大约几秒种)就有问题了。
WAIT WINDOW '等待过程中激活Excel表中的一个单元格'
oExcel.ActiveSheet.Range('A1').Select
2022-07-13 16:19
ztx19
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2014-8-22
收藏
得分:0 
在csyx的帮助下,几经周折问题基本解决,谢谢吹水版主的关注!
2022-07-13 16:36
快速回复:如何判断通过VFP打开的Excel是否处于忙碌状态?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020751 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved