会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > OFFICE系统集成 > 正文

关于从ACCESS中向WORD填写数据的问题的说明

时间:2004-08-18 01:08 来源:本站原创 作者:刘小军 阅读:


点击浏览该文件

 

关于从access中向WORD填写数据的问题的说明

 

一、问题来源:bbs/dispbbs.asp?boardID=2&ID=17414&page=1

解决的方法见上面附件。

 

二、解决问题的几个关键:

1.怎样在WORD空表格里填写内容;

2.填写的步骤;

3.关于主/子窗体的问题。

 

三、解决办法:

1.怎样在WORD空表格里填写内容:

access向WORD表格中填写数据需要使用TABLE对象,

Doc.Documents("模板.doc").Tables(1).Cell(Row:=2, Column:=1).Range.Text = "2" 表示在文件“模板.doc”的第1个表格的第2行第1列的格子内写上“2”。如果是第2个那就是“Tables(2)”。所以在程序里用了一个变量“intTabCount”表示现在是填写哪个表格,每当K可以被15整除(K Mod 15 = 0)时,intTabCount就会增加1。

 

2.填写的步骤:

如果看原来的问题,当程序执行完毕之后,正好是页面上需要重复的部分已经填写完毕。把现在的情况复制下来,当需要增加页时,在页面最下插入分页符然后粘贴上复制的内容则正好。

这一部分的代码我是在WORD中用录制宏的方法记录下来的。原来的录制宏代码如下:

Sub Macro1()
'
' Macro1 Macro
' 宏在 2004-8-15 由 刘小军 录制
'
    Selection.WholeStory                       '全选文本
    Selection.Copy                             '复制
    Selection.EndKey Unit:=wdStory             '将光标移到文件结尾(我是用Ctrl+End实现的)
    Selection.InsertBreak Type:=wdPageBreak    '插入分页符
    Selection.Paste                            '粘贴  
End Sub

 原本是5句代码,我分在两部分。第2部分的3句在下面的If结构里。

If K Mod 15 = 0 And K < intCount Then  '如果K到达15的倍数且小于总记录数时增加一页(等于总数的话就不加了)
    intTabCount = intTabCount + 1
    Doc.Selection.EndKey Unit:=6 'wdStory
    Doc.Selection.InsertBreak Type:=7 'wdPageBreak
    Doc.Selection.Paste
End If

代码里把参数直接用数字代替时因为只有引用了“WORD 9.0 Object Library”才能使用参数。但这样不能在安装OFFICE XP的机器上使用,降低了兼容性。

至于如果获得参数代表的数字,很简单,在WORD的VBA编辑器的立即窗口里输入:

? wdStory
6

 

3.关于主/子窗体的问题:

程序里是用DAO获得子窗体的记录集,然后再根据记录集的内容填写的。使用ADO也可以。所以,只要能取得记录集,是主窗体还是子窗体根本就不是问题。

 

4.其它要注意的问题:

a.因为模板是每次都要使用的,而且要求里面是空的才行。所以最后会用SaveAs另存一个文件名,至于起什么名可以有很多种方法。程序里是用的日期相关的名字。

b.如果一开始就让文档显示出来,则在填写数据时页面会反复闪烁,而且填写速度很慢,所以程序里是在隐藏的状态下填写,然后再显示出来。

c.现在程序里还缺少一些错误处理的部分,有待进一步改进,也欢迎大家指正。

 


点击浏览该文件

这是以前写的另外一个由access在WORD里输出报表的例子,也有些不同的东西在里面,请大家参考。

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: