2013-05-08 39 views
0

好吧,我有一個我正在玩的Word 2010模板。我在頂部有一個按鈕,用戶點擊該按鈕可以自動將Word文檔以(幾乎)正確的名稱保存爲pdf,並保存在正確的目錄中,然後打開文檔。我也有一個下拉式表單字段,他們可以選擇月份。將下拉表單字段輸出爲字符串以便在VBA公式中使用

該按鈕的代碼:

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:\用戶[用戶名] \桌面\度量\已安裝隊度量 - [月] - [用戶名] .PDF

最大的問題是,我無法弄清楚如何在下拉框中選擇字符串「date」。我有一種感覺,我使用了錯誤的(很確定我需要一個ActiveX控件),但我對VBA很陌生,並且希望得到一些幫助。

+0

您可以添加您使用的組合框的文檔呈現類型的屏幕截圖嗎? – 2013-05-08 20:27:31

+0

無法將其添加到帖子中,沒有足夠的代表。 http://i.imgur.com/hIA7DkH.png 你可以通過開發工具tab-> Controls-> Legacy Tools-> Drop-Down Form Field – jparnell8839 2013-05-09 11:20:19

回答

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不強制標題或標籤的唯一性。

另一種方法是創建一個帶有「Date」元素的自定義XML部件,並使用xPath將控件連接到它。然後,您可以直接從Custom XML Part中檢索值,並且不需要知道有關控件本身的任何信息。但我認爲,這種簡單的形式會增加你無法做到的複雜性。

+0

感謝bibadiak,我會試試看,讓你知道它怎麼變成 – jparnell8839 2013-05-10 12:41:45

+0

我需要把它放在它自己的子?我究竟該如何構建?請記住,我在VBA總共n00b ... – jparnell8839 2013-05-10 16:46:50

+0

不,您可以將代碼放在您現有的例程中 - 可以選擇將Dim放到例程的頂部,並且您需要Dim「strDate」或將其更改爲「日期」以適應您現有的代碼。理想情況下,您還可以處理沒有找到適當標籤的情況,等等。 – 2013-05-10 19:16:48

相關問題