用vb操作word文档的有关问题
用vb操作word文档的问题
现有磁盘上word文档一个 里面是10行乘以3列的一张表格 一共是30个格子
现在我想写一个程序 按下按纽 就往这30个格子里填入内容
请问这些代码该怎么写 急用 谢谢
------解决方案--------------------
前段时间刚写完,和你分享一下,希望可以帮到你
现有磁盘上word文档一个 里面是10行乘以3列的一张表格 一共是30个格子
现在我想写一个程序 按下按纽 就往这30个格子里填入内容
请问这些代码该怎么写 急用 谢谢
------解决方案--------------------
前段时间刚写完,和你分享一下,希望可以帮到你
- VB code
这里的数据库采用的是ACCESS生成的MDB数据库。考虑到在VB中画表等操作比较繁琐,所以采用了饮用模版的导出形式。仅供大家学习参考。
Dim cn As New ADODB.Connection ‘定义数据库
Dim rs As New ADODB.Recordset
Dim scan As String ‘存储查找数据库
Dim Appword As Word.Application ’定义WORD模型变量
Dim Newword As Word.Document
Set Appword = New Word.Application
Set Newword = Appword.Documents.Add(App.Path + "\stencil" + "\stencil.doc") ‘这里是打开模版文档。stencil是模板的意思。可根据自己的需要替换。
Appword.Visible = False ‘隐藏WORD。导出时不在任务栏出现WORD文档。
Appword.WindowState = wdWindowStateMinimize
scan = text2(0).Text '按编号搜索需要导出word的记录,一次只能导出一条记录
rs.CursorLocation = adUseClient
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data.mdb;Jet OLEDB:Database Password=harry2000"
cn.Open ConnectionString
rs.Open "select * from ADMIN where 编号 = '" & scan & "'", cn, adOpenKeyset, adLockOptimistic‘查找需要导出的记录
If rs.RecordCount = 0 Then ’如果不存在该记录
MsgBox "请在左边选择需要导出的记录"
Appword.Documents.Close
Appword.Quit
Exit Sub
Else ‘如果存在记录则运行以下代码
With Newword ’设置模版表格和在表格中填入数据库内容。
.Tables(1).Cell(1, 1).Range.Text = (Format(rs!日期, "yyyy年mm月dd日"))
.Tables(1).Cell(1, 3).Range.Text = "第" & rs!次数 & "次到访"
.Tables(2).Cell(1, 2).Range.Text = (rs!姓名)
.Tables(2).Cell(1, 4).Range.Text = (rs!性别)
.Tables(2).Cell(1, 6).Range.Text = (rs!年龄)
.Tables(2).Cell(2, 2).Range.Text = (rs!所在单位 & rs!所在职位)
.Tables(2).Cell(2, 4).Range.Text = (rs!联系电话)
.Tables(2).Cell(3, 2).Range.Text = (rs!领导)
.Tables(2).Cell(3, 4).Range.Text = (rs!时间) '可以根据自己的需要设置填写内容。
End With
Appword.ChangeFileOpenDirectory (App.path+ "\导出WORD文件夹")
Appword.ActiveDocument.SaveAs FileName:=(App.path+ "\导出WORD文件夹\" & rs!姓名 & Format(Now, "yyyy-mm-dd") & ".doc"), FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False
Appword.Documents.Close
Appword.Quit
MsgBox "导出成功," & rs!姓名 & Format(Now, "yyyy-mm-dd") & "的资料保存于" & vbCrLf & vbCrLf & App.path + "\导出WORD文件夹"
End If
Set Appword = Nothing ‘交还控制权
Set Newword = Nothing
Newword.Close
rs.Close ’关闭数据库
注意事项:
1 以上是基本的操作,如果想在VB中对WORD操作。可以在WORD中录制宏看一下代码,然后复制过来稍作修改即可。
2 上面的代码中用到的模版是之前设置好表格。
.Tables(1).Cell(1, 1).Range.Text 这个意思是在表格1中的第一个表格的内容
3 导出完毕后主要交还控制权。
4 这段代码运行时确保电脑中没有运行WORD程序,不然会弹出“由于应用程序忙。。。”所以在到处前应判断程序中是否运行WORD程序。
判断代码如下:
'在通用写入如下代码。
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long