Foxtable(狐表)用户栏目专家坐堂 → 关于打印张数


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

主题:关于打印张数

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
关于打印张数  发帖心情 Post By:2021/1/4 6:16:00 [只看该作者]

我想一键打印选定的记录和每个记录打印的张数

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

以下是【打印合格证】按钮代码,只能打印选定的记录,没有包括张数。
Dim cbx As WinForm.ComboBox = e.Form.Controls("合格证模板")
Tables("打印").Filter = "[合格证模板] = '" & cbx.text & "' And [打印] = False "
If Tables("打印").Rows.Count = 0 Then '如果是一个空表
    MessageBox.Show("没有要打印的数据!", "提示")
    Return '那么返回
Else
    '选定筛选的表
    With Tables("打印")
        .Select(0,0, .Rows.Count -1, .Cols.Count -1)
    End With
End If
Dim Book As New XLS.Book(ProjectPath & "Attachments\" & cbx.text & ".xls")
Book.Build()
Book.Save(ProjectPath & "Reports\" & cbx.text & ".xls")
Dim Proc As New Process
Proc.File = ProjectPath & "Reports\" & cbx.text & ".xls"
Proc.Start()
For Each r As Row In Tables("打印").Rows
    r("打印") = True
Next

Tables("打印").Filter = "[打印] = False"


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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/4 9:00:00 [只看该作者]

使用vba打印
   Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "Reports\" & cbx.text & ".xls")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.PrintOut(Copies:="打印份数,比如5"
App.Quit


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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2021/1/4 10:03:00 [只看该作者]

1、vba代码写在哪?2、打印张数是手动设置吗?3、同一个模板(比如3C)包括多个产品(有时多达10多个),每个产品要打印的张数不同(有的产品可能要打印几百张)能一键实现吗?

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/4 10:32:00 [只看该作者]

打印代码替换一楼的以下代码。

Dim Proc As New Process
Proc.File = ProjectPath & "Reports\" & cbx.text & ".xls"
Proc.Start()

打印的张数可以自己使用表格设置,然后查表使用,比如

Ws.PrintOut(Copies:=r("打印张数"))

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19384 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2021/1/5 18:47:00 [只看该作者]

打印表的表事件DataColChanged 中我设置了打印3张,可直打印一张,不知代码问题再哪?
If e.DataCol.Name = "打印" Then
    If e.DataRow("打印") = True Then
Dim Book As New XLS.Book(ProjectPath & "Attachments\" & e.DataRow("合格证模板") & ".xls")
Book.Build()
Book.Save(ProjectPath & "Reports\" & e.DataRow("合格证模板") & ".xls")
'Dim Proc As New Process '定义过程
'Proc.File = ProjectPath & "Reports\" & e.DataRow("合格证模板") & ".xls"  '打开工作簿
'Proc.Verb = "Print" '直接打印
'Proc.Start() '执行
Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "Reports\" & e.DataRow("合格证模板") & ".xls")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.PrintOut(Copies:= e.DataRow("张数"))
App.Quit
DataTables("打印").Save() 
    End If
End If



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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/5 20:29:00 [只看该作者]

我测试没有问题

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\问题\信息.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.PrintOut(Copies:= 3)
App.Quit

msgbox(e.DataRow("张数"))

 回到顶部