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



vb+access+excel关于打印的问题,谢谢关注


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


vb+access+excel关于打印的问题,谢谢关注[已结贴,结贴人:issa_0]
发表于:2007-10-19 00:49:39 楼主
各位达人,高手,小弟紧急求助,谢谢关注!
我用vb连了access数据库,对表a进行了sql查询,返回记录集为rs,
假设rs中包含5个字段,10条数据。
想让vb控制excel让sheet1中cells(2,1),cells(5,6)...等五个单元格分别填入rs中那五个字段中的数据。并依次逐条打印,即打印rs中那10条记录,可以实现么???应该怎么办呢???
谢谢了!!!
发表于:2007-10-19 08:33:381楼 得分:20
      'create   a   recordset   from   all   the   records   in   the   orders   table
      dim   snwind   as   string
      dim   conn   as   new   adodb.connection
      dim   rs   as   adodb.recordset
      snwind   =   _
            "c:\program   files\microsoft   office\office\samples\northwind.mdb"
      conn.open   "provider=microsoft.jet.oledb.4.0;data   source="   &   _
            snwind   &   ";"
      conn.cursorlocation   =   aduseclient
      set   rs   =   conn.EXECute("orders",   ,   adcmdtable)
     
      'create   a   new   workbook   in   excel
      dim   oexcel   as   object
      dim   obook   as   object
      dim   osheet   as   object
      set   oexcel   =   createobject("excel.application")
      set   obook   =   oexcel.workbooks.add
      set   osheet   =   obook.worksheets(1)
     
      'transfer   the   data   to   excel
      osheet.range("a1").copyfromrecordset   rs
      oexcel.visible   =   true

      'save   the   workbook   and   quit   excel
      'obook.saveas   "c:\book1.xls"
      'oexcel.quit
     
      'close   the   connection
      rs.close
      conn.close
发表于:2007-10-19 09:09:132楼 得分:30
本文将告诉你如何使用vb代码连接office应用程序,并简要接触一下在文件中输入数据的方法。实际上,在vb中用代码与word和excel进行会话并控制它们,是可行的。但是请注意,首先需要在机器上安装office应用程序,才能在vb代码中存取它们的对象。
     下面就是一些例子,告诉你如何与这些程序会话,并控制它们。

option   explicit

dim   xlsapp   as   excel.application
dim   wrdapp   as   word.application

     只要相关的对象库已经被选择,在应用程序中进行对象变量的赋值是可能的。microsoft   excel   8.0对象库是相对于excel的,而   microsoft   word   8.0   对象库是为word服务的。

     在vb的ide环境中,从“工程”菜单中选择“引用”,可以看到系统可用的所有库列表。

private   sub   command1_click()
set   xlsapp   =   excel.application
with   xlsapp
show   excel
.visible   =   true
create   a   new   workbook
.workbooks.add
put   text   in   to   the   cell   that   is   selected
.activecell.value   =   "hi"
put   text   into   a3   regardless   of   the   selected   cell
.range("a3").value   =   "this   is   an   example   of   connecting   to   excel"
end   with
end   sub
     在上面的程序段中,我们在变量xlsapp中建立了一个对象,这样excel就对用户可见了。当excel象这样启动后,并不包含一个工作簿,所以必须创建或者执行打开操作。这里,我们建立了一个新的工作簿,然后,就可以操作其中的信息,或者打印,或者保存,或者你任意想做的事情。

private   sub   command2_click()
close   the   workbook
xlsapp.workbooks.close
close   excel
xlsapp.quit
end   sub

     上面这段代码执行关闭程序的功能。首先,关闭工作簿,这将出现一个提示对话框,询问用户是否想保存修改;然后,退出应用程序。

private   sub   command3_click()
set   wrdapp   =   new   word.application  
with   wrdapp
show   word  
.visible   =   true
create   new   document
.documents.add
add   text   to   the   document
.activedocument.content.text   =   "hi"
.activedocument.content.text   =   "this   is   a   test   example"
end   with
end   sub  

     上面这段代码中,在变量wrdapp中设置引用word程序的对象。同样,当word按照这种方式启动后,不会包含一个文档,所以,必须执行建立或者打开操作。这里是建立了一个新文档,然后可以操作其中的信息了,打印、保存、发送邮件,等等...

     但是,在word文档中放置文本并非容易!特别是与excel一起工作时。为了简单地在特定的地方放置文本,需要有一个bookmark标记。这意味着,需要事先建立一个模板。

private   sub   command4_click()
close   the   current   document
wrdapp.activedocument.close
close   word
wrdapp.quit
end   sub

     上面这段代码的功能是关闭应用程序。首先,关闭当前文档,这时可能需要用户保存修改。然后,退出程序。

private   sub   form_unload(cancel   as   integer)
clear   the   memory
set   xlsapp   =   nothing
set   wrdapp   =   nothing
end   sub

     最后一段代码就是关闭vb应用程序。这是优秀程序员编程的好习惯。

     well   i   hope   this   brief   tutorial   is   helpful.   it   does   not   touch   on   much   of   what   you   can   do   to   the   office   applications   once   theyre   open,   but   should   give   you   an   idea   of   how   to   get   started.

     好了,简单的介绍到此结束。我希望能抛砖引玉,让你更加随意地操作office应用程序!  
发表于:2007-10-19 10:27:583楼 得分:0
不错,
发表于:2007-10-21 00:10:474楼 得分:0
谢谢二楼高人详细讲解,使我受益匪浅。想再问一下,用vb激活出来的excel是一个工作簿,对其编辑完后还要再退出重新运行vb程序,我其实是想让excel当作报表似的输出打印数据库相应内容,可以办到么?
比如,cmb1点击后,excel相应单元格赋值完毕,并生成打印预览界面,确认打印后,excel表不保存关闭,自动返回相应vb程序。
还有,在vb添加excel部件后,便可在窗体上画出一个工作表来,可以对它进行编辑么???
我用cells()的语句给它赋值好像是不行。
谢谢高人了!!!
发表于:2007-10-21 06:56:585楼 得分:0
你这样的要求为什么不直接用报表工具呢?比如vb自带的datareport
发表于:2007-10-22 12:34:216楼 得分:0
因为报表工具去画表的原始模板太难了……
而且想逐项打印,不大好实现……
发表于:2007-10-23 21:58:087楼 得分:0
谢谢帮助,今天散分


快速检索

最新资讯
热门点击