我目前正忙于为我的公司自动化一些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
在回答输入框之后,此代码会自动在指定区域显示答案。但是,这些输入框的某些答案需要在多个区域中显示。有人知道如何启用此功能吗?
另外,我希望某个段落依赖于输入框的答案。假设上面提到的输入框的答案是yes,那么它显示段落A,否则显示段落B。我不知道如何编写这段代码,也不知道如何在word文档中标记它来确定段落的位置。
发布于 2020-04-22 01:28:42
一个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
根据给出的答案,这里有一种显示替代文本的方法。在文本中输入两个段落,将每个段落放入书签中,然后选择both并选择Format>Font>Hidden。段落将消失。然后使用以下代码有选择地显示一个段落:
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
发布于 2020-04-22 06:40:11
您不需要将相同的数据写入不同的表单字段;您所需要做的就是配置文档以使用对第一个表单字段的内部书签的交叉引用(在本例中为'initialen_achternaam')。这样,你只需要把每个数据写一次。完成表单字段的编写后,只需一行代码即可:
ActiveDocument.Fields.Update
例如,为了根据您写入'initialen_achternaam‘表单字段的内容来改变输出,您可以在文档中使用IF字段,代码如下:
{IF{REF initialen_achternaam}= "Yes" "Text for Yes", "Text for No"}
注意:上例中的字段大括号对(即'{ }')都是在文档本身中通过Ctrl-F9 ( Mac上的Cmd-F9,或者,如果您使用的是笔记本电脑,您可能需要使用Ctrl-Fn-F9)创建的;您不能简单地键入它们或从此消息中复制和粘贴它们。字段构造中表示的空间都是必需的。
https://stackoverflow.com/questions/61347046
复制相似问题