以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教,今天excel打印应用中出现“xxx.xls文件已打开,请先关闭之”的提示。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44569) |
-- 作者:ericsky -- 发布时间:2014/1/3 20:44:00 -- 请教,今天excel打印应用中出现“xxx.xls文件已打开,请先关闭之”的提示。 用的是论坛中sunsenfeng老师很好用的代码: Dim Book As New XLS.Book(ProjectPath & "Attachments\\订单.xls")
-------------- 出错的原因是:上一次打印时,由于网络打印机的延迟,而中途取消了打印,造成打开的excel文件未能关闭,而停留在进程中。 造成后面生成的excel报表未能更新到reports目录下的excel。 后来,进程强行关闭excel进程才恢复正常。 请教:有没有代码可以判断excel是否已经打开,如果已打开,则关闭之。 请老师指教,谢谢! [此贴子已经被作者于2014-1-3 20:45:06编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/1/3 21:11:00 -- 用下面的代码,以后就不会出现不关闭的情况了。但无法做到你说的关闭特定excel文件的功能,最多是关闭所有的excel文档。 Dim Book As New XLS.Book(ProjectPath & "Attachments\\订单.xls") Dim file As String = ProjectPath & "Reports\\订单.xls" Book.Build() \'生成细节区 Book.Save(file) \'保存工作簿 Dim App As New MSExcel.Application Dim Wb As MSExcel.WorkBook try wb = App.WorkBooks.Open(file) Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1) With Ws.PageSetup .PaperSize = MSExcel.XlPaperSize.xlPaperA4 \'纸张大小 .CenterHorizontally = True \'页面水平居中 .CenterVertically = True \'页面垂直居中 .Zoom = False \'以下设置将缩印在一页内 .FitToPagesWide = 1 \'按照1页的宽度打印 .FitToPagesTall = 1 \'按照1页的高度打印 End With \'App.Visible = True Ws.PrintOut catch ex As exception msgbox("出错了") finally wb.save wb.close App.Quit End try |
-- 作者:ericsky -- 发布时间:2014/1/3 21:45:00 -- 多谢甜老师,这个预防性的代码刚才简单测试了,可行,谢谢! |
-- 作者:ericsky -- 发布时间:2014/1/4 0:08:00 -- 另一个更满意的方法 Dim Book As New XLS.Book(ProjectPath & "Attachments\\订单.xls") Dim file As String = ProjectPath & "Reports\\订单.xls" If FileIsOpened(file)= True Then \'如果excel文件已打开 Shell("cmd.exe /c taskkill /f /im excel.exe") \'强行关闭excel进程 MessageBox.Show("同名excel文件已打开,请按确认先关闭之,再重新打印!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return \'返回 End If Book.Build() \'生成细节区 Book.Save(file) \'保存工作簿 Dim App As New MSExcel.Application Dim Wb As MSExcel.WorkBook wb = App.WorkBooks.Open(file) Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1) With Ws.PageSetup .PaperSize = MSExcel.XlPaperSize.xlPaperA4 \'纸张大小 .CenterHorizontally = True \'页面水平居中 .CenterVertically = True \'页面垂直居中 .Zoom = False \'以下设置将缩印在一页内 .FitToPagesWide = 1 \'按照1页的宽度打印 .FitToPagesTall = 1 \'按照1页的高度打印 End With \'App.Visible = True Ws.PrintOut wb.save wb.close App.Quit
[此贴子已经被作者于2014-1-4 0:08:18编辑过]
|