簡體   English   中英

VBA for Word 中是否有一個宏可以自動更改不同位置的文本?

[英]Is there a macro within VBA for Word that automatically changes a text at different locations?

我目前正忙於為我的公司自動化一些 word 文件。 在這一點上,我在自動化文檔的某個部分時遇到了一些麻煩。 到目前為止,我已經使用此代碼自動填充標有特定文本字段的特定區域(在本例中;initialen_achternaam):

Sub Document_Open()
ActiveDocument.FormFields("initialen_achternaam").Result = InputBox("Wat zijn de initialen en achternaam van de nieuwe medewerker?", "", "A. de Vries")
End Sub

此代碼在回答輸入框后,自動在指定區域顯示答案。 但是,這些輸入框的某些答案需要在多個區域中顯示。 有誰知道如何啟用此功能?

另外,我希望某個段落依賴於輸入框的答案。 所以,假設上述輸入框的答案是肯定的,則顯示A段,否則顯示B段。我不知道如何編寫此代碼,也不知道如何在word文檔中標記它來解決position該段的。

PeterT 建議的說明:

Sub Document_Open()
    Dim InputText As String
    InputText = InputBox("Wat zijn de initialen en achternaam van de nieuwe medewerker?", "", "A. de Vries")
    With ActiveDocument
        .FormFields("initialen_achternaam").result = InputText
        .FormFields("formfield2").result = InputText
        .FormFields("formfield3").result = InputText
    End With
End Sub

這是根據給出的答案顯示替代文本的一種方法。 在文本中輸入兩個段落,將每個段落包裝在書簽中,然后 select 兩者並選擇格式>字體>隱藏。 段落將消失。 然后使用此代碼有選擇地顯示一個段落:

Public HiddenTextVisibleb As Boolean, HiddenTextPrintsb As Boolean

Sub AutoOpen()
    If Options.PrintHiddenText = True Then
        HiddenTextPrintsb = True
        Options.PrintHiddenText = False
    End If
    If ActiveWindow.View.ShowHiddenText = True Then
        HiddenTextVisibleb = True
        ActiveWindow.View.ShowHiddenText = False
    End If
End Sub

Sub ShowHideParagraphs()
    Dim InputText As String
    InputText = InputBox("Wat zijn de initialen en achternaam van de nieuwe medewerker?", "", "A. de Vries")
    If InputText = "Yes" Or InputText = "yes" Then
        ActiveDocument.Bookmarks("Paragraph1").Range.Font.Hidden = False
    Else
        ActiveDocument.Bookmarks("Paragraph2").Range.Font.Hidden = False
    End If
End Sub

Sub AutoClose()
    If HiddenTextPrintsb = True Then
        Options.PrintHiddenText = True
    End If
    If HiddenTextVisibleb = True Then
        ActiveWindow.View.ShowHiddenText = True
    End If
End Sub

您不需要將相同的數據寫入不同的表單域; 您需要做的就是配置文檔以使用對第一個表單域的內部書簽的交叉引用(在本例中為“initialen_achternaam”)。 這樣,您只需將每個數據寫入一次。 完成對表單域的寫入后,您只需要一行代碼:

ActiveDocument.Fields.Update

至於根據您寫入“initialen_achternaam”表單字段的內容來改變 output,例如,您將在文檔中使用如下代碼的 IF 字段:

{IF{REF initialen_achternaam}= "Yes" "Text for Yes", "Text for No"}

注意:上面示例的字段大括號對(即'{}')都是在文檔本身中創建的,通過 Ctrl-F9(Mac 上的 Cmd-F9,或者,如果您使用的是筆記本電腦,您可能需要使用 Ctrl-Fn-F9); 您不能簡單地鍵入它們或從該消息中復制和粘貼它們。 字段構造中表示的空格都是必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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