[英]Retrieve Userform textbox value from document vba
一個我還沒有找到任何答案的簡單問題:我有一個包含多個用戶窗體的 Word 模板文檔。
現在在 AutoNew() 上,基於此模板的新文檔應首先將隱藏用戶表單中的值(當前值存儲在模板中的某處)讀取到全局變量中以供進一步處理。 現在,vba 如何從文檔中讀取用戶表單中的值,而通常不需要顯示用戶表單? 這些用戶表單僅在 [很少] 需要時用於更改值,並且不應自動顯示(它們通過控件打開,一旦一切正常,這些控件就會消失)。
我的幾次嘗試都導致了錯誤:
Sub Fertigstellen()
Load Empfängerdaten ' proposition from Raymond Wu
Dim X
' X = ActiveDocument.Forms("Empfängerdaten.QL4").Text ' error 438
' X = ActiveDocument.Forms("Empfängerdaten").QL4.Text ' error 438
' X = ActiveDocument.QL4.Text ' error 438
' X = ActiveDocument.Empfängerdaten.QL4.Text ' error 438
' X = ActiveDocument.Content("QL4").Text ' compiling error
' X = ActiveDocument.Empfängerdaten.QL4.Text ' error 438
' X = ActiveDocument.UserControl("QL4").Text ' compiling error
If X Like "CH" Then ' alle Daten sind vorhanden
Stop
End If
QR_Dialog.Show
結束子
我需要的是使用哪個命令(如果有的話)。
我能找到的所有方法都只能從嵌入在文檔本身中的文本框中讀取值。 文檔的代碼找不到用戶表單的文本框。
但是,我需要使用打印文檔時隱藏的用戶表單。 來自用戶表單的值僅用於生成二維碼,它們不應出現在其他任何地方。 請注意,MS Word 似乎沒有用於訪問用戶表單的Activedocument.Forms![MyField].Value屬性(與 Access 或 Excel 不同)。
注意:反過來也沒有問題:從用戶表單中,很容易在打開或關閉全局變量時填充它們。
答案和我的問題一樣簡單:我在這個 Excel 博客中找到了它。 對我來說非常令人驚訝(因為我主要參與 Access)是 Word 不需要指定“用戶表單”——它的名字就足夠了!
下面的代碼現在只需要適應不同的 QL# 文本框,其中的內容需要逐個檢查:
Sub Fertigstellen()
Dim fTextBox As Object
For Each fTextBox In Empfängerdaten.Controls
If TypeName(fTextBox) = "TextBox" Then
Select Case fTextBox.Name
Case "QL4"
If fTextBox.Text Like "ABC" Then
' OK
Else
Debug.Print fTextBox.Name & ": " & fTextBox.Text
End If
' … … …
Case Else
Debug.Print fTextBox.Name & " should be implemented"
End Select
End If
Next
' … … …
End Sub
在此基礎上,可能也應該可以只訪問一個文本框,但我不需要,因為必須驗證所有用戶表單的值。
無論如何,感謝您的提示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.