2012-07-06 124 views
0

背景:我想從TextBox中使用特定的輸入文本作爲SaveAs對話框中的默認文件名。使用VBA宏在Word中獲取TextBox的值,但是在Word模板中

我已經在我的文檔中實現以下VBA腳本,一個Word 2010模板.dotm

Sub FileSaveAs() 

'for testing 
Dim fileName As String 
fileName = Me.tb_myTextBox.Value & "_MyFileNameToSave" 
MsgBox fileName 

'use specific file name in save dialog 
With Dialogs(wdDialogFileSaveAs) 
    .Name = fileName 
    .Show 
End With 

End Sub 

它工作正常,當我運行它。我保存了.dotm,關閉它並從Windows資源管理器重新打開它(表示爲「最終用戶」)。 但在這種情況下,意味着在打開模板文檔作爲「最終用戶」之後(以便我可以保存新文檔而不覆蓋模板),即使我輸入了文本框的內容/值也是空的一些東西進入它。

那麼,怎樣才能在模板的「文檔模式」中讀出TextBox的數據呢?

+0

文本框在哪裏? – 2012-07-07 11:48:48

+0

您應該編輯您的問題以分享您的確切步驟,我不明白哪些不適合您。此外,您的代碼不完整,任何提供幫助的人都需要填寫空格,這可能會導致混淆。 – JohnZaj 2012-07-07 14:38:08

+0

好的,新的解釋嘗試......有兩種情況: - (1)編輯模板,如果保存它,它又是.dotm。在這種情況下,所有腳本都可以正常工作。 (2)將模板作爲「最終用戶」(而不是作爲模板作者)打開。如果用戶點擊保存按鈕,文檔將保存爲.doc而不是.dotm。在這種情況下,腳本不起作用! btw:代碼不完整? * confused * – Chris 2012-07-09 07:02:19

回答

1

如何在模板的「文檔模式」下讀出TextBox的數據?

不確定你的意思。這個工作對我來說:

創建表單:

Private Sub btn_OK_Click() 
    Dim fileName As String 
    fileName = tb_myTextBox.Value & "_MyFileNameToSave" 
    With Dialogs(wdDialogFileSaveAs) 
     .name = fileName 
     .Show 
    End With 
End Sub 

創建子打電話這種形式:

Sub FileSaveAs() 
    UserForm1.Show 
End Sub 

這是所有保存在模板/ .dotm。

現在,從模板創建一個文檔(雙擊模板以啓動文檔)。 Alt + F8並從模板運行宏(您可能必須從「宏」中下拉菜單中選擇模板)。結果:我的表單出現了,我爲文檔輸入了一個名稱,按下確定,然後出現Word Save As對話框,並顯示了我給文檔的名稱。

+0

感謝您的回覆! 問題是,我沒有額外的保存按鈕。在用戶點擊Save(As)按鈕/菜單項後,應該(自動)調用「FileSaveAs()」子功能。 – Chris 2012-07-09 09:29:17

+0

因此FileSaveAs不會攔截用戶執行File |操作另存爲?我不明白這個問題,所以我需要重新創建它。 – JohnZaj 2012-07-12 15:20:28

+0

不,我的Sub是在用戶單擊File |時調用的另存爲)。所以這個函數的調用工作正常!但TextField位於文檔中,而不是以額外的用戶形式存在。也看看我在這個問題上的評論。很奇怪,爲什麼所有的都在案例1中工作,但不是在案例2中: - / – Chris 2012-07-13 10:24:52