【发布时间】:2020-11-19 13:28:35
【问题描述】:
我使用交互式内容控件创建了一个 Microsoft Word 表单。这是一个非常长的表单,包含各种字段和字段类型(下拉列表、文本框、组合框、复选框等......)经过几个月和多次编辑后,它以不一致的格式返回给我字段值和占位符文本值。某些字段即使在您填写后仍显示为灰色。其他字段具有完全不灰显的占位符文本。字体的大小、样式和灰色阴影似乎不一致。我可以在设计模式下编辑占位符文本字体样式和大小,但我无法弄清楚如何确保占位符文本变灰(相同的灰色阴影)并且字段值文本不是。此外,我正在考虑使用 VBA 宏自动化该过程。我使用 Greg Maxey 共享的以下宏来设置占位符文本很多:
Sub SetPlaceHolderText()
Dim strText As String
If Selection.Range.ContentControls.Count = 1 Then
On Error GoTo Err_Handler
With Selection.Range.ContentControls(1)
strText = .PlaceholderText.Value
.SetPlaceHolderText , , InputBox("Type your new placeholder text below.", _
"Define Placeholder Text", strText)
End With
Else
MsgBox "You must select a single ContentControl." & vbCr + vbCr _
& "Click the ""empty"" or ""title"" tag of the" _
& " ContentControl you want to modify."
End If
Exit Sub
Err_Handler:
End Sub
可以在这里找到:https://gregmaxey.com/word_tip_pages/modify_cc_placeholder_text.html。
是否可以执行类似的操作来应用默认的 Word 内容控件格式(例如占位符文本采用段落默认格式和一定的灰色阴影,直到它被覆盖,此时它不再变灰)?我有近 80 个采用这种形式的内容控件,并希望简化流程而不必从头开始。我将不胜感激任何建议,无论是使用 VBA 脚本还是 Word 对象属性。谢谢。
编辑:
我创建了一个简单的宏,它循环遍历我的字段并更改占位符和值的字体,但它不会更改所有默认值。正如我在 cmets 中提到的,当我选择某些内容时,我会通过选择默认情况下与占位符相同的第一个下拉项返回占位符,格式会再次重置。这是脚本:
Sub Demo()
Dim cc As ContentControl
For Each cc In ActiveDocument.ContentControls
If cc.Type = wdContentControlDropdownList Or cc.Type = wdContentControlComboBox Then
If cc.ShowingPlaceholderText Then
With cc.Range.Font
.Name = "Times New Roman"
.Size = 11
.ColorIndex = wdGray50
End With
Else
With cc.Range.Font
.Name = "Times New Roman"
.Size = 11
.ColorIndex = wdBlack
End With
End If
End If
Next cc
我完全不熟悉 Microsoft Word,但我能够创建表单并提取数据。但是,其他人对其进行了如此多的更改(这反过来又弄乱了一些构建格式),因此回滚到我的“干净”版本并重新开始将是很多工作。如果可能的话,我想“修复”现有的表格。我还缺少哪些其他 Word Content Control 字体默认值?
编辑:
循环访问日期选择器字段并应用标准格式和占位符文本也很不错。出于某种原因,当我包括:
If cc.Type = wdContentControlDropdownList Or cc.Type = wdContentControlComboBox Or cc.Type = wdContentControlDate Then
我的日期占位符文本的格式与内容控件值文本的格式相同(在我上面的示例中,它是 wdBlack。)
【问题讨论】:
-
字符样式“占位符文本”定义了占位符文本的外观。你检查过每个控件的 .ShowingPlaceholderText 属性了吗?
-
@TimWilliams,我尝试了一些途径,但不一样。我可以让占位符文本和下拉字体临时更改。默认情况下,如果您插入内容控件,它会添加一个通用名称,例如“选择一个值”。它还将它添加为第一个下拉项(具有空白值)。您可以进行选择,然后返回第一个项目以返回占位符文本。如果我这样做,它会重置我的格式。我只是希望能够以一种简化的方式将我的内容控件恢复为默认设置,而无需删除它们并重新开始。
-
对不起,我没有任何其他建议 - 不是一个大字 VBA 用户...
-
非常感谢@TimWilliams 的帮助。这些链接非常有用。
标签: vba ms-word word-contentcontrol