簡體   English   中英

從文檔 vba 中檢索用戶表單文本框值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM