阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 2381|回复: 7

[求助] 想实现定时更新数据,求助定时执行提数公示的方法

[复制链接]

该用户从未签到

发表于 2009-5-15 13:37:57 | 显示全部楼层 |阅读模式
比如:数据由多人协同填报,打开查询表后,想每5分钟提取一次数据,从而实现实时更新的效果,不知道在7.17上能实现吗?请大家交流,我想到了也会跟贴发布出来。
楼主热帖
启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2020-1-27 23:07
  • 签到天数: 796 天

    [LV.10]以坛为家III

    发表于 2009-5-15 18:22:21 | 显示全部楼层
    只能用VBA来实现了,但VBA在WEB下就失效了!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2016-7-6 18:20
  • 签到天数: 105 天

    [LV.6]常住居民II

    发表于 2009-5-16 22:46:56 | 显示全部楼层
    2楼能不能说的详细些?  我知道帮助中有个  ExecQuery函数的示例,但这是手工的  能不能在这个上面改一下实现自动执行的功能
    启用邀请码注册,提高发帖质量,建设交流社区

    该用户从未签到

     楼主| 发表于 2009-5-18 08:39:22 | 显示全部楼层
    请2楼在详细知道一下。以筛选条件改变时执行时,条件单元格如果不是手动改变的话,公示并不会自动执行。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2019-9-12 07:47
  • 签到天数: 106 天

    [LV.6]常住居民II

    发表于 2009-5-18 18:47:28 | 显示全部楼层
    EXCEL有ONTIME函数,也可以用timer控件
    本帖子由阳光论坛管理组成员答复

    打造出国内一流的行业软件应用交流论坛--阳光网驿助力企业信息化
    启用邀请码注册,提高发帖质量,建设交流社区

    该用户从未签到

     楼主| 发表于 2009-5-19 10:21:29 | 显示全部楼层
    根据版主提示,现在实现了在单元格按照系统时间实时更新显示,操作如下:
    1、新建一个模板文档,定义一个当前时间的单一数据项(名为:_ESF3013,按Alt+F11,调出vba编辑器。  
    2、“插入”菜单下的“模块”,在新模块中输入  
    function biao()  
    ActiveSheet.Range("_ESF3013").Value = Time  
    Application.OnTime Time + TimeSerial(0, 0, 1), "biao"  
    End function
    3、找到左侧的工程资源浏览器(没有的话按ctrl+R弹出),双击Thisworkbook,输入
    Private Sub Workbook_Open()
    a = biao()
    End Sub
    4、保存后关掉excel,重新打开.该数据单元格能实时更新时间。
    5、原计划利用该单元格时间的变化,当分钟为5的倍数时执行提数公示,但发现es只有年份值、 月份值、 日期值、季度值的取值,无法取分钟值,因此计划落空。
    6、请斑竹再提示一下怎么在VBA里面直接调用es的表间公示:是不是可以利用ExecQuery来执行表间公示哟??

    [ 本帖最后由 goal 于 2009-5-19 10:31 编辑 ]
    启用邀请码注册,提高发帖质量,建设交流社区

    该用户从未签到

     楼主| 发表于 2009-5-19 10:51:20 | 显示全部楼层
    定时执行标间公式已基本实现,vba代码如下:
    Function biao()
    Application.OnTime Time + TimeSerial(0, 0, 30), "表间公式"  '每30秒执行名为“表间公式”的子程序
    End Function

    Sub 表间公式()
    '获取Excel服务器编程接口
    Set oAdd = Application.COMAddIns.Item("ESClient.Connect").Object
    ans = oAdd.execQuery("提取历史记录")   '执行名为“提取历史记录”的表间公式
    Set oAdd = Nothing
    a = biao()
    End Sub

    Private Sub Workbook_Open()   '打开表时自动执行该程序
    a = biao()
    End Sub


    通过以上代码,基本实现了每30秒执行一次指定的表间公示。但任有一个问题,就是当这个表关闭后,该vba代码仍然继续执行,导致表格关闭后任然会每30秒打开并执行表间公式,只有完全关闭excel程序才能终止代码执行。
    请高手不吝赐教,帮助解决这个问题。

    [ 本帖最后由 goal 于 2009-5-20 08:43 编辑 ]

    goal 于 2009-5-20 08:48 补充以下内容

    一点感想:vba的强大的确是毋庸置疑,但对我等菜鸟来讲,使用的难度还是太大了。不过通过这次操作,初步了解了es提供的编程接口,以后有时间还可以在研究,看来可以实现更多高级功能了
    启用邀请码注册,提高发帖质量,建设交流社区
    头像被屏蔽
  • TA的每日心情
    郁闷
    2011-3-30 21:47
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2009-5-20 15:35:53 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表