Foxtable(狐表)用户栏目专家坐堂 → 如何实现定时指定时间自动打印


  共有3762人关注过本帖树形打印复制链接

主题:如何实现定时指定时间自动打印

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/10 8:44:00 [显示全部帖子]

把打印代码放到计划管理:http://www.foxtable.com/webhelp/topics/0657.htm

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/10 11:07:00 [显示全部帖子]

把下面代码去掉,剩下的都放到计划管理即可。

Dim Proc As New Process 
Proc.File = fl
Proc.Start()

至于是否合理,自己测试过才知道。你们从来都没有测试数据库和测试项目的吗?永远都是直接在生产系统里直接更改和测试?!!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/10 13:46:00 [显示全部帖子]

Dim Book As New XLS.Book(ProjectPath & "Attachments\订单.xls") '打开模板
Dim fl As String = ProjectPath & "Reports\订单.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Sheet(3,9).Value = "<日期 = # " & Date.Today & "#>"  '写入打印条件
Book.Build() '生成报表
Book.Save(fl) 
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.PrintOut(Preview:=False)    '直接打印;http://www.foxtable.com/webhelp/topics/2121.htm
App.Quit

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/10 14:47:00 [显示全部帖子]

  • PrintOut

    直接打印。如,Ws.PrintOut

    该方法还可通过设置有关参数来控制打印,如下面的代码就是打印第1-10页,打印份数为3,打印前先预览,指定的打印机为"pdfFactory Pro":

    Ws.PrintOut(From:=1,To:=10,Copies:=3,Preview:=True,ActivePrinter:="pdfFactory Pro")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/10 16:02:00 [显示全部帖子]

打印是需要一定的时间的,不要把间隔设置的太短。之前的文件还在使用中,再生成同样名称的报表当然就无法生成了

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/11 9:26:00 [显示全部帖子]

这个解决不了,都退出了,后面的代码就等于是废的。

强制关闭execl这样

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("Excel" = p.ProcessName)
        p.kill
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/11 13:36:00 [显示全部帖子]

放到最上面,其它任何代码之前

 回到顶部