您的位置:程序门 -> vb -> vba



vb中使用excel的打印功能,加边框后只能打印一次,不加一切正常,请高手指点原因!~


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb中使用excel的打印功能,加边框后只能打印一次,不加一切正常,请高手指点原因!~[已结贴,结贴人:sdm588]
发表于: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驻留内存导致,请高手指点解决方法,拜谢
发表于:2007-05-28 12:46:101楼 得分:0
帮顶.........
发表于:2007-05-28 14:42:112楼 得分:0
自己顶一下,没人会么?
发表于:2007-06-01 10:08:073楼 得分:0
知道的帮解决一下啊?
发表于:2007-06-02 10:15:084楼 得分:0
mark
发表于:2007-06-04 17:33:345楼 得分:20
objexl.range(cells(1,   1),   cells(1,   4)).merge

--------你试试把所有含有objexl.range(cells(),cells())
改成   objexl.range(objexl.cells(),objexl.cells())
发表于:2007-06-05 10:59:116楼 得分:0
忘了结帖,我就是那么改的,ok了,虽然是迟来的爱,还是非常感谢。


快速检索

最新资讯
热门点击