0

我有一个 Word 2010 模板。我在顶部有一个按钮,可以自动将 Word 文档保存为具有(几乎)正确名称的 pdf,在正确的目录中,然后打开文档。

我还有一个下拉表单字段来选择月份。

在此处输入图像描述

按钮的代码:

Private Sub CommandButton1_Click()
    Convert_PDF
End Sub


Sub Convert_PDF()

    Dim desktoploc As String
    Dim filename As String
    Dim date As String
    Dim user As String
    Dim mypath As String

    desktoploc = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    filename = "Installs Team Metrics"
    user = VBA.Environ("USERNAME")
    mypath = desktoploc & "\Metrics\" & filename & " - " & date & " - " & user

    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
        mypath, _
        ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
        Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub

这会将文件输出到 C:\Users[username]\Desktop\Metrics\Installs Team Metrics - [Month] - [username].pdf

如何将下拉框中选择的内容获取到字符串“日期”。

4

1 回答 1

0

看起来像一个内容控件而不是一个遗留字段,所以你需要

Activedocument.Contentcontrols(i).Range.Text

其中 i 是索引号。控件的(文档中第一个是1等)

所以要么你需要知道数字,要么你需要使用控件的标题或标签(或其他东西)来识别控件。在内容控件的情况下,您必须迭代集合以找到它,例如

Dim cc As ContentControl
For Each cc in ActiveDocument.ContentControls
  If cc.Tag = "mytag" Then
    strDate = cc.Range.Text
    Exit For
  End If
Next

小心你如何标题/标记你的控件。Word 不强制标题或标签的唯一性。

另一种方法是创建一个带有“日期”元素的自定义 XML 部件,并使用 xPath 将您的控件连接到它。然后,您可以直接从自定义 XML 部件中检索值,而无需了解控件本身的任何信息。但我认为以一种简单的形式增加了你可以不用的复杂性。

于 2013-05-10T10:58:50.310 回答