| 发表于:2007-05-28 12:19:34 楼主 |
代码目的是把一个flexgrid的内容导入到excel中,然后打印。 使用excel的打印功能,加边框后只能打印一次,不加一切正常,请高手指点原因!~ 具体代码如下: private sub cmdlogrecordprint_click() on error goto err1 dim i as long dim j as long dim objexl as excel.application '声明对象变量 me.mousepointer = 11 '改变鼠标样式 set objexl = new excel.application '初始化对象变量 objexl.sheetsinnewworkbook = 1 '将新建的工作薄数量设为1 objexl.workbooks.add '增加一个工作薄 objexl.sheets(objexl.sheets.count).name = "参数打印 " '修改工作薄名称 objexl.sheets( "参数打印 ").select '选中工作薄 <book1> objexl.cells(1, 1) = "参数表 " objexl.range(cells(1, 1), cells(1, 4)).merge objexl.range(cells(1, 1), cells(1, 4)).verticalalignment = xltop objexl.range(cells(1, 1), cells(1, 4)).horizontalalignment = xlcenter objexl.range(cells(1, 1), cells(1, 4)).currentregion.borders.linestyle = xlcontinuous objexl.cells(2, 1) = "序号 " objexl.cells(2, 2) = "用户名称 " objexl.cells(2, 3) = "记录信息 " objexl.cells(2, 4) = "记录时间 " objexl.range(cells(2, 1), cells(2, 4)).verticalalignment = xltop objexl.range(cells(2, 1), cells(2, 4)).horizontalalignment = xlcenter objexl.range(cells(2, 1), cells(2, 4)).currentregion.borders.linestyle = xlcontinuous for i = 3 to (usermessage.rows + 3) - 1 - 1 '循环写入数据 for j = 1 to usermessage.cols objexl.cells(i, j) = trim(usermessage.textmatrix(i - 2, j - 1)) next j objexl.range(cells(i, 1), cells(i, 4)).verticalalignment = xltop objexl.range(cells(i, 1), cells(i, 4)).horizontalalignment = xlcenter objexl.range(cells(i, 1), cells(i, 4)).currentregion.borders.linestyle = xlcontinuous next i objexl.rows( "1:1 ").select '选中第一行 objexl.selection.font.bold = true '设为粗体 objexl.selection.font.size = 18 '设置字体大小 objexl.cells.entirecolumn.autofit '自动调整列宽 objexl.rows( "2:1 ").select '选中第二行 objexl.selection.font.bold = true '设为粗体编号 objexl.selection.font.size = 16 '设置字体大小 objexl.cells.entirecolumn.autofit '自动调整列宽 objexl.range(cells(1, 8), cells(1, 11)).columnwidth = 10 'objexl.range(cells(1, 8), cells(1, 11)).autoformat ,,,,, objexl.activesheet.pagesetup.printtitlerows = "$1:$2 " '设置打印固定行 'objexl.activesheet.pagesetup.printtitlecolumns = "记录 " '打印标题 objexl.activesheet.pagesetup.rightfooter = "打印时间: " & _ format(now, "yyyy年mm月dd日 hh:mm:ss ") 'objexl.activewindow.view = xlpagebreakpreview '设置显示方式 objexl.activewindow.zoom = 100 '设置显示大小 'objexl.activesheet.pagesetup.orientation = xllandscape '设置打印方向(横向) objexl.visible = true objexl.sheetsinnewworkbook = 3 '将默认新工作薄数量改回3个 objexl.activesheet.printpreview objexl.displayalerts = false '不显示提示保存对话框 objexl.workbooks.close objexl.quit '关闭excel set objexl = nothing '清除对象 me.mousepointer = 0 '修改鼠标 exit sub err1: objexl.sheetsinnewworkbook = 3 objexl.displayalerts = false '关闭时不提示保存 objexl.quit '关闭excel set objexl = nothing me.mousepointer = 0 end sub 正常执行一次后,再执行到objexl.range(cells(1, 1), cells(1, 4)).merge就开始出现错误,怀疑是excel.exe驻留内存导致,请高手指点解决方法,拜谢 |
|
|
|
|