我在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
这甚至可以实现吗?如果是这样,怎么样?
答案 0 :(得分:0)
将docx保存为dotx(真正的Word模板,可以容纳您需要的其他内容)。
从要在文档中重复的文本(要插入数据的位置)创建Building Block条目,并将其保存在TEMPLATE中。保存并关闭模板。
使用Documents.Add方法而不是Documents.Open,以便在模板上建立新文档。
循环记录并为每个记录插入Building Block。
(请注意,我的答案基于您提供的信息,这是有限的。可能会遗漏一些拼图,因为我不知道您做什么和不知道。互联网上有很多这样的例子那种你可以找到更多细节的东西......)
答案 1 :(得分:-1)
为什么不将它作为报告,并从报告中制作出您想要的内容(Excel,Word,PDF ...)。当您点击命令时,隐藏的原因可以通过宏或VBA直接输出到单词。