【问题标题】:Word bookmarks template using Access data使用 Access 数据的 Word 书签模板
【发布时间】:2016-04-24 06:10:44
【问题描述】:

我有一个带书签的 Word 模板。这些书签通过 VBA 代码从 Access 数据库应用程序中提取数据。

On Error GoTo ErrHandler
Me.Recalc

If Me!txtCount = 0 Then
    MsgBox "Please select a record to print.", vbOKOnly, "Error"
Else

Dim oWord As Object 'Word.Application
Dim doc As Object 'Word.Document

Set oWord = CreateObject("Word.Application")
Set doc = oWord.Documents.Open("C:\Request_Template.doc")
oWord.Visible = True

Dim oAccess As Object
Dim dbs As Database
Dim rst As Recordset

Dim strCriteria As String

      With oWord.ActiveDocument
            If .Bookmarks.Exists("DatePage1") = True Then
               .Bookmarks("DatePage1").Select
               If Not IsNull([Forms]![frmForRequest_Preview]!Date) Then
                  oWord.selection.Text = (CStr(Format([Forms]![frmForRequest_Preview]!Date, "mmm d, yyyy")))
               Else
                  oWord.selection.Text = ""
            End If
      End With
End If
Exit Sub

ErrHandler:
MsgBox Err.Number & ": " & Err.Description, vbOKOnly, "Error"

问题是如何打开模板副本让用户在查看文档后点击“保存”?现在使用原始模板,用户必须执行“另存为”。那不方便。

【问题讨论】:

  • 您可以在从模板中打开doc.SaveAs(somepathHere) 后立即添加它。但是您需要处理用户不想想要保存它的情况。

标签: vba ms-access ms-word bookmarks


【解决方案1】:

Word 中的“模板”是一种特定的文件类型(.dot、.dotx 或 .dotm)。就目前而言,您没有 Word“模板”,只有标准 Word 文档 (.doc)。

在 Word 中打开此 .doc 并将其另存为“文档模板 (.dot)。

现在,将 Documents.Open 行更改为 Documents.Add,引用新的 .dot 并更改参数以匹配 Add 方法的参数。

这将自动打开模板文件的副本,因此不会有任何用户或您的代码覆盖模板的危险。

但请注意,由于这是一个新文档,因此仍然需要“另存为”,但它会自动出现 - 用户不必考虑使用“另存为”。如果您根本不希望用户看到另存为,则您的代码需要执行 Document.SaveAs,并且您需要知道应该保存的文件路径和位置。

【讨论】:

  • 谢谢。它完美地工作。是否有机会根据这个新 word 文档的两个书签的组合创建默认位置和默认名称?
  • 太好了 - 不要忘记单击答案旁边的复选标记,以便其他有相同问题的人可以看到这是一个答案 :-) 如果我理解正确,可以创建默认名称。但是,您应该发布一个新问题,该问题明确提出。然后我们可以在答案中发布代码(在评论中效果不佳)。实际上,它可能已经在某个地方被询问和回答了,所以你可能想先搜索一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多