我正在开发一个数据库应用程序,用户打开Word模板文档并将其与数据库记录合并。我已经成功地为一条记录编写了代码,我打开一个模板文件并用DB数据替换模板文档中的项目。我尝试多次打开模板文档(每个DB记录一次),但这会打开一个Word对话框,提示用户打开第二个和后续文档为只读(不是很优雅),我得到一个Word Normal.dotm每个文档关闭时出错。 那么,我如何使用一个模板文档同时创建多个word文档。我看到的两个选项是:1)在创建其他文档之前以新名称保存一个文档或2)有一个文档包含多个页面(每个数据库记录一个)但是为了做到这一点,我将不得不复制并粘贴模板文档每个记录的内容一次,但我不知道如何做到这一点。 请记住,我在数据库编程方面经验丰富,只有VB对应用程序的基本知识,所以你可以越明确,它就越有用。
提前致谢。
答案 0 :(得分:1)
此功能将根据指定的模板为每条记录创建一个新文档。我在Word模板中使用预设书签来添加数据库中的数据。该子程序将在数据库中运行。
Public Sub CreateDocs()
Dim oWord As Word.Application
Set oWord = New Word.Application
Dim oDocument As Word.Document
Dim oDatabase As DAO.Database
Set oDatabase = CurrentDb
' where to save our files
Dim strDocPath As String
strDocPath = CurrentProject.Path & "\"
' preset bookmark in template
Dim oBookMark As Word.Bookmark
' query with records
Dim oRecordset As DAO.Recordset
Set oRecordset = oDatabase.OpenRecordset("qrySomeQuery")
' template file
Dim strTemplateName As String
strTemplateName = "C:\users\you\Documents\Doc1.dotx"
' hide Word
oWord.WindowState = wdWindowStateMinimize
oWord.Visible = False
While Not oRecordset.EOF
' create new document from template
Set oDocument = oWord.Documents.Add(strTemplatePath, False, , False)
' get reference to bookmark in template
Set oBookMark = oDocument.Bookmarks("bkmkSomePlace")
' add our data
oBookMark.Range.Text = oRecordset.Fields(0).Value & vbTab & oRecordset.Fields(1).Value
' Save and close
' Saving using one of the query fields that is unique
oDocument.SaveAs strDocPath & "generatedFile" & oRecordset.Fields(0).Value, wdFormatDocumentDefault
oDocument.Close
' next record
oRecordset.MoveNext
Wend
oWord.Close
Set oWord = Nothing
If Not oRecordset Is Nothing Then oRecordset.Close
Set oRecordset = Nothing
oDatabase.Close
Set oDatabase = Nothing
Set oDocument = Nothing
End Sub