访问VBA合并Word模板与查询

时间:2016-03-03 20:20:36

标签: vba ms-access ms-word access-vba

我想在Word中创建一个模板,然后我可以使用Access将数据合并到。 Access数据具有不同级别的分组。在每个分组中,有子查询也可能具有分组。由于存在分组,因此需要重复某些页面。

示例:我有一个打印教室详细信息的查询。每个教室里也有很多学生。所以,我想有一个DOTM模板,按类分组每个学生。然后打印第一堂课的细节,然后是学生,然后是下一堂课,然后是学生等。

访问表/查询等不是问题。它创建了一个模板,然后合并它,我遇到了问题。现在,我只有一个简单的模板(Dotm文件)。该文件有一些样板文件和一些书签。然后我使用此代码与dotm文件进行交互:

Dim objWord As Word.Application
Dim PauseTime, Start, Timer As Integer
Dim wrkCurrent As DAO.Workspace

Set objWord = CreateObject("Word.Application")
objWord.Visible = False 'True is visible

Dim sql As String
sql = "SELECT * FROM tbl_School"  'ex query that produces more that one record
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set wrkCurrent = DBEngine.Workspaces(0)
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(sql)

objWord.Documents.Add ("C:\test\Test.dotm")
'this template has one page, with one bookmark, School_Name.  What I want
' to happen is that, for every record, create a new page, with this 
'bookmark filled in.
If (Not rst.EOF) Then
    With rst
        Do Until .EOF
            objWord.ActiveDocument.Bookmarks("School_Name").Select
            objWord.Selection.Text = rst!school_name
            .MoveNext
        Loop
    End With
End If

objWord.ActiveDocument.SaveAs ("C:\test\MyNewDocument.docx")
objWord.PrintOut
objWord.Quit
Set objWord = Nothing

问题是这只打印第一个,然后是错误。我该怎么做分组?仅供参考,我知道我可以在报告中执行此操作,但我必须允许将报告导出到Word,保留导出丢失的图像,图形等。

0 个答案:

没有答案