将下拉表单字段输出到字符串以在VBA公式中使用

时间:2013-05-08 19:25:19

标签: macros word-vba word-2010

好的,我正在玩一个Word 2010模板。我在顶部有一个按钮,用户单击该按钮可以在正确的目录中自动将单词doc保存为具有(几乎)正确名称的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 [用户名] \ Desktop \ Metrics \安装团队指标 - [月] - [用户名] .pdf

最大的问题是,我无法弄清楚如何在下拉框中选择字符串“date”。我有一种感觉,我使用的是错误的(很确定我需要ActiveX控件)但我对VBA很新,并希望得到一些帮助。

1 个答案:

答案 0 :(得分:0)

看起来像内容控件而不是旧版字段,因此您需要

Activedocument.Contentcontrols(ⅰ).Range.Text

我在哪里是索引号。对照(文件中的第一个是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不会强制标题或标记的唯一性。

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