访问Word:通过VBA学生列表

时间:2015-12-04 23:13:45

标签: vba ms-access ms-word

我在Microsoft Access中有以下学生表:

name | email_address
--------------------
Student 1 | student1@example.com
Student 2 | student2@example.com
Student 3 | student3@example.com

我还有一个像这样的Microsoft Word文档:

List of students

Name: __________________________________
Email address: ___________________________________

我想通过VBA代码完成的工作是使用以前的文档作为模板创建一个新的Microsoft Word文档,以便输出如下:

List of students:

Name: Student 1
      _________
Email address: student1@example.com
               ____________________

Name: Student 2
      _________
Email address: student2@example.com
               ____________________

Name: Student 3
      _________
Email address: student3@example.com
               ____________________

重要的是要注意我不能假设该表仅包含3名学生,如上例所示;它可能有4,5,6 ......甚至可能是10亿!

我想通过VBA代码实现这一目标,但不知道如何做到这一点。到目前为止,我唯一的代码是:

Private Sub btnOpenDocument_Click()
    OpenStudentListing
End Sub

Private Sub OpenStudentListing()
    Dim appword As Word.Application
    Dim doc As Word.Document

    On Error Resume Next
    Error.Clear
    Set appword = GetObject(, "word.application")
    If Err.Number <> 0 Then
        Set appword = New Word.Application
        appword.Visible = True
    End If

    filePath = ExtractTemplate(Student_Listing)
    If IsNull(filePath) Then Exit Sub
    Set doc = appword.Documents.Open(filePath)
    'The document opens just fine, but now what?
End Sub

这甚至可以实现吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:0)

将docx保存为dotx(真正的Word模板,可以容纳您需要的其他内容)。

从要在文档中重复的文本(要插入数据的位置)创建Building Block条目,并将其保存在TEMPLATE中。保存并关闭模板。

使用Documents.Add方法而不是Documents.Open,以便在模板上建立新文档。

循环记录并为每个记录插入Building Block。

(请注意,我的答案基于您提供的信息,这是有限的。可能会遗漏一些拼图,因为我不知道您做什么和不知道。互联网上有很多这样的例子那种你可以找到更多细节的东西......)

答案 1 :(得分:-1)

为什么不将它作为报告,并从报告中制作出您想要的内容(Excel,Word,PDF ...)。当您点击命令时,隐藏的原因可以通过宏或VBA直接输出到单词。