用VBA实现数据库中数据在Word中置放

来源 :希望月报·上半月 | 被引量 : 0次 | 上传用户:HUZHAOHUA333
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  在实际工作中,常常需要将数据库中的数据放在Word文挡中。传统的实现方法是在Word中手工输入或用数据库软件编写一个专门的程序(模块)来完成此项工作,这种方法既不方便又易出错,是否有新的方法来实现数据库中数据在Word中置放呢?其实我们在工作或学习中很少用到Word中的书签功能和宏命令。我们可以通过VBA这种编程语言,利用Word中的书签作为媒介,用宏命令的方法来实现数据库在Word中的自动替换。
  我们以学校常用的通知书为例,以VBA为编程语言,以Access或foxpro作为数据库,用word中的书签作为媒介,运用Word中的宏命令来示例说明VBA实出数据库中数据在Word中置放的方法。
  操作步骤
  新建模板
  先在Word中建立一个名为“通知书.dot”的模板,将通知书中固定的文字内容输入到该模板中, 将变动的文字内容(取数据库中的字段值)设置成书签。为了编程方便,书签名可取数据库表中相应的字段名。完成后存入Office的Templates(模板)目录下。
  激活引用
  要实现VBA与数据库Microsoft Access 97的连接,在Word中选主菜单 ”工具\宏\宏名”打开Visual Basic编辑器;选VBA主菜单条上[工具]菜单项下的[引用]命令,激活[引用]对话框,从可使用的引用列表中选择Microsoft DAO 2.5/3.5 Compatibility Libray一项,然后单击[确定]按钮,把它引用到工程中来。
  编写宏命令
  在模板中编写出一条宏命令,直接在Word中用程序代码实现对数据库的读取。对Access数据库,用语句Set md = DBEngine. OpenDatabase (“成绩库.mdb”)打开名为“成绩库.mdb”的数据库,用语句 Set rs = md. OpenRecordset("学生成绩表", dbOpenTable) 打开数据库中的表名为"学生成绩表"的记录集,本命令只对记录集进行查询,为了提高查询速度,选择了快照dbOpenSnapShot类型的记录。对于foxpro的dbf数据库,用语句 Set md = OpenDatabase("d:\grade\学生成绩表", False, False, "foxpro 2.5")打开名为“成绩库.dbf”的数据库,用语句Set rs = md.OpenRecordset("学生成绩表")的记录集。因为数据库中一条记录对应一个学生,每个学生都要打印一份通知书,都要用通知书的内容(包括书签),要将模板中的通知书全部内容复制到一个新建的临时文档中,处理完一条记录后,把通知书内容从新建的临时文挡中复制过来供下一条记录使用。对于每个通知书(对应一条记录),用循环将数据表中的字段名用数组的形式保存,再根据通知书中的书签名与保存的字段名比较,如果存在则用语句:mydoc1.Bookmarks(i).Select选择的书签名, 用数据表中相应的字段值(rs.Fields(字段名))来替代文档中的所选择的书签名。
  源程序列举
  ‘从数据题中读取数据的宏,在Word97(2000)上调试运行
  Sub start()
  Dim i, j, k, m, nrecord , txtnumber As Integer
  Dim aname(1 To 20) As String
  Set md = DBEngine.OpenDatabase("D:\grade\成绩库.mdb")
  Set rs = md.OpenRecordset("学生成绩表", dbOpenTable)
  Set mydoc1 = ActiveDocument
  txtnumber = mydoc1.Characters.Count
  Set range1 = mydoc1.Range (start:=0, End:=txtnumber)
  range1.Copy
  mydoc2 = Documents.Add
  Selection.Paste
  Set range2 = mydoc2.Range(start:=0, End:=txtnumber)
  mydoc1.Activate
  On Error Resume Next
  rs.MoveLast
  nrecord = rs.RecordCount
  On Error GoTo doerror
  For k = 1 To 20
  aname(k) = rs.Fields(k).name
  Next k
  doerror: For m = 1 To nrecord
  If m = 1 Then rs.MoveFirst Else rs.MoveNext
  For k = 1 To 5
  totalnumber = mydoc1.Bookmarks.Count '已存在的书签数
  For i = totalnumber To 1 Step -1
  bname = rs.Fields(aname(k))
  If UCase$(mydoc1.Bookmarks(i).name) = UCase$(aname(k)) Then
  mydoc1.Bookmarks(i).Select
  Selection.TypeText Text:=bname
  End If
  Next i
  Next k
  Selection.MoveDown Unit:=wdLine, Count:=4
  If m < nrecord Then
  mydoc2.Activate
  range2.Copy
  mydoc1.Activate
  Selection.Paste
  End If
  Next m
  Documents(mydoc2).Close savechanges:=wdDoNotSaveChanges
  End Sub
  通过以上办法,就能实现Access数据库或foxpro数据库中的数据在Word中的自动成批替换。
其他文献
摘 要:素质教育的实施有很多的影响因素,而教师是素质教育的践行者,教师的素质决定着教育的素质。教师的以下素质会对素质教育的实施产生关键性的影响。  关键词:素质教育;教育观念;师德;师能    素质教育早在20世纪80年代就作为国家富强、人民富裕的根本大计提了出来。时至今日,回首素质教育与应试教育对峙搏羿的历程,难免油然而生一股强大的苦涩与艰辛。纵然影响素质教育实施的因素很多,然而在教学工作中深刻
期刊
摘 要:要切实提高学生的作文水平,就要让他们成为写作的主人。通过写随笔、摘抄、课外阅读等途径,加强写作素材的积累;通过口头作文训练、写作速度训练、自评、互评等形式的专项训练,激发学生的写作兴趣,提高作文水平。  关键词:写作的主人;积累;训练  长期以来,学生的写作水平低、语文成绩很难提高成为中学语文教学的一个难点。造成这一现象的根本原因是我们的作文教学存在问题。就拿高中语文来说,许多学生每学期只
期刊
对大多数文科生来说,数学是块难啃的“骨头”,是最容易丢分的弱项。正因此,数学学得好的文科生,在激烈的高考竞争中便占有极大的优势,更能脱颖而出成为佼佼者。所以,虽然难“啃”,但学好数学,对文科生是很重要的。本文试文科班学生的学与老师的教作些探讨。  首先,作为老师,应帮助学生端正学习态度,树立信心。文科生数学基础较差,对知识的灵活运用能力也不太强,但作为老师,一定要克服各种急燥的情绪,耐下心来与学生
期刊
摘 要:体验是认识过程的一个重要环节,它使学生了解的知识得以巩固;认识事理得以印证;良好的习惯得以养成。在“体验”中巩固“知”,在“体验”中感悟“理”这是体验教育的目的。所以教师要尽量为学生提供体验的机会,要有计划的搞好体验教育。下面就体验教育的途径、方法、作用、注意点等方面谈谈我粗浅的看法。  关键词:体验;感悟内化;思品教育     《中共中央国务院关于进一步加强和改进未成年人思想道德建设的若
期刊
摘 要:通过激发学生学习兴趣、合理组织课堂内容、指导学生学习技巧等手段进行CAD教学。  关键词:CAD教学;学习兴趣;组织课堂内容;指导学习技巧    CAD是中等职业学校工程类专业学生须掌握的必备技能。因此培养学生熟练地使用CAD软件成为一项重要的教学内容。学生掌握了运用计算机绘制符合工程要求的图纸的技能,更能适应现代生产对应用型技术人才的需求。但是中等职业学校的学生一般学习基础差,缺乏良好的
期刊
摘 要:快乐体育是一种教育思想。体育游戏是快乐体育的重要组成部分和表现形式。体育游戏可使学生德、智、体、美全面发展。  关键词:快乐体育;游戏;体育游戏    1.快乐体育的概念  “快乐体育”一词最先出现在1979年第24届全国学校体育研究协会会议东京大会上。1979年,日本为了提出适应日本社会变化的体育思想——重视把运动作为生活内容来学习的体育——运动内容论、目的论的体育,其口号形式就是“快乐
期刊
案例背景:    新一轮高中语文课程标准要求精选学习内容,变革学习方式,使全体学生获得必需的语文素养。同时要求体现学生的主体性,激发学生的兴趣与潜能,促进学生个性的发展。于是,讨论式的教学法被多方使用,茶馆式的四人合作小组式的讨论是当下较为流行的。但是讨论仅是把一个问题解决掉,难以实现课程目标,要使讨论具有鲜活的生命力,就应当使其保持批判性。因为只有学生持有批判的心态时,他们才会尽可能多地所取别人
期刊
摘要:本文讨论了认知语言学理论对解释多义现象的指导作用,重点论述了多义现象与语义范畴之间的关系,隐喻、转喻对词语多义形成的作用,以及对当前大学英语词汇教学的指导作用。文中指出,我们应当积极借鉴认知语言学理论来解释多义现象并把它运用到大学英语词汇教学中去。  关键词:多义现象;认知;隐喻;转喻;词汇教学    1.多义现象    多义现象是指一个词语有几个或多种互相联系的意义的语言现象。过去我们常说
期刊
WWW上很重要的应用是访问WEB数据库。能够运用ASP访问数据库是因为ASP有内置ADO组件。用ASP访问WEB数据库时,必须使用ADO组件,ADO是ASP内置的ActiveX服务器组件(ActiveX Server Component),通过在WEB服务器上设置ODBC和OLEDB可连接多种数据库:如SYBASE、ORACLE、INFORMIX、SQL SERVER、ACCESS、VFP等,是对
期刊
在ASP.NET的运用中,可以通过TreeView控件的应用,非常方便地实现任何类型的树状结构的创建。当然运用TreeView控件,首先得安装 TreeView控件、导入命名空间。在你的Web程序使用TreeView控件之前,首先必须下载Internet Explorer WebBrower controls到你的开发机器上,然后导入命名空间。在安装好控件并导入命名空间后就可以开始创建树状结构了。
期刊