以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 虚拟打印机打印问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103613) |
-- 作者:xvkewen -- 发布时间:2017/7/12 16:51:00 -- 虚拟打印机打印问题 以下内容是接着"Foxtable内容显示及Excel报表导出的内容显示问题" 话题中“有点甜”老师解答的与打印机设置有关来说的,如何使用虚拟打印机来实现直接打印的问题,由于主题有点不一样,所以就另起这一话题了;
我的目标是在以下窗口中添加一个“打印部件工艺”工艺的按钮,点击后可以实现根据左边目录树生成的结果可以直接打印,不用打印预览; 具体实现步骤的,我的想法是这样的; 2、根据预先设置好的Excel报表模版,导出对应部件的工艺报表;(代码如下)
Dim r As Row = Tables("MainSchedule").Current Dim Book As New XLS.Book(ProjectPath & "Attachments\\工艺书(配料中心).xls") \'打开模板 Dim Sheet As XLS.Sheet = Book.Sheets(0) Dim filepath = "D:\\reports\\" & r("SrsNO") & "(办单号)工艺书.xls" Book.Build() \'生成细节区 Book.Save(filepath)\'保存工作簿 \'以下代码用于设置自动换行及调整行高(对合并单元格无效) Dim App As New MSExcel.Application Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(filepath) Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1) Dim Rg As MSExcel.Range = Ws.Cells Rg.WrapText = True Rg.EntireRow.AutoFit \'自动调整行高 App.Visible = True 3、将导出的Excel报表(已设置自动换行及适应行高)用DoPDF V7虚拟打印机打印成PDF文件; Ws.PrintOut(Preview:=false,ActivePrinter:=" doPDF v7") 4、再用真实打印机直接打印已经生成的PDF文件;
这里我在测试的时候遇到以下两个问题,各位老师还请帮忙指导指导,谢谢; 1、每次用虚拟打印机的时候,都会弹出以下界面,有没有办法不让弹出以下界面,直接打印到对应的路径中 ?
2、如何用虚拟打印机打印出PDF文件时,通过代码设置打印质量为96 Dpi ? 3、生成的PDF文如何通过Foxtable代码执行打印程序,不用打印预览 ? |
-- 作者:有点甜 -- 发布时间:2017/7/12 22:16:00 -- 打印机是无法控制的。
换一个虚拟打印机呗 https://www.baidu.com/s?ie=UTF-8&wd=%E8%99%9A%E6%8B%9F%E6%89%93%E5%8D%B0%E6%9C%BA
|
-- 作者:xvkewen -- 发布时间:2017/7/13 10:03:00 -- 如下图,用Var变量设置打印范围的表达式怎么写才是正确的 ? 此主题相关图片如下:截屏图片.jpg [此贴子已经被作者于2017/7/13 10:03:05编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/7/13 10:19:00 -- 条件,不能直接使用变量。
http://www.foxtable.com/webhelp/scr/2626.htm
|
-- 作者:xvkewen -- 发布时间:2017/7/14 14:20:00 -- 针对以上问题,我出现打印多份的问题,怎么解决?具体情况如下
1、我用以下代码导出Excel报表,然后直接用PDF虚拟打印机,用96 dpi分辨率打印到“D:\\reports”文件夹内; Dim r As Row = Tables("MainSchedule").Current 2、利用“文件监视器”监视“D:\\reports”文件夹,并在FileCreated事件中添加以下代码; Dim Proc As New Process 结果,当用PDF虚拟打印机保存文件“D:\\reports”文件夹后,实际打印机给我直接打印出3份相同的文件,是为什么? |
-- 作者:有点甜 -- 发布时间:2017/7/14 14:38:00 -- FileCreated事件加入代码,看弹出什么。
msgbox(e.FullPath)
你为什么要这样打印?直接打印不行? |
-- 作者:xvkewen -- 发布时间:2017/7/14 15:09:00 -- 主要是为了解决Excel打印不完整的问题; http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=101517&authorid=0&page=0&star=3
弹出三个这个。
此主题相关图片如下:123.jpg |
-- 作者:有点甜 -- 发布时间:2017/7/14 15:27:00 -- 从源头处理吧。动态的调整每一行的行高。
Dim App As New MSExcel.Application
|
-- 作者:有点甜 -- 发布时间:2017/7/14 15:29:00 -- 回复7楼,也可以修改事件代码
static ptime As Date = Nothing
Dim Proc As New Process |
-- 作者:xvkewen -- 发布时间:2017/7/14 16:21:00 -- 谢谢老师,决定按9楼的来做的,8楼的做法,虽然解决了行高不足的问题,但是对打印纸张却不是最经济的做法; |