首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA for Word中是否有宏可以自动更改不同位置的文本?

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

Stack Overflow用户
提问于 2020-04-21 23:21:16
回答 2查看 37关注 0票数 0

我目前正忙于为我的公司自动化一些word文件。在这一点上,我在自动化文档的特定部分时遇到了一些问题。到目前为止,我已经使用此代码自动填充了用特定文本字段标记的特定区域(在本例中为initialen_achternaam):

代码语言:javascript
运行
复制
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文档中标记它来确定段落的位置。

EN

回答 2

Stack Overflow用户

发布于 2020-04-22 01:28:42

一个PeterT建议的例子:

代码语言:javascript
运行
复制
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。段落将消失。然后使用以下代码有选择地显示一个段落:

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2020-04-22 06:40:11

您不需要将相同的数据写入不同的表单字段;您所需要做的就是配置文档以使用对第一个表单字段的内部书签的交叉引用(在本例中为'initialen_achternaam')。这样,你只需要把每个数据写一次。完成表单字段的编写后,只需一行代码即可:

代码语言:javascript
运行
复制
ActiveDocument.Fields.Update

例如,为了根据您写入'initialen_achternaam‘表单字段的内容来改变输出,您可以在文档中使用IF字段,代码如下:

代码语言:javascript
运行
复制
{IF{REF initialen_achternaam}= "Yes" "Text for Yes", "Text for No"}

注意:上例中的字段大括号对(即'{ }')都是在文档本身中通过Ctrl-F9 ( Mac上的Cmd-F9,或者,如果您使用的是笔记本电脑,您可能需要使用Ctrl-Fn-F9)创建的;您不能简单地键入它们或从此消息中复制和粘贴它们。字段构造中表示的空间都是必需的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61347046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档