我使用交互式内容控件创建了一个 Microsoft Word 表单。这是一个非常长的表单,包含各种字段和字段类型(下拉列表、文本框、组合框、复选框等......)经过几个月和多次编辑后,它以不一致的格式返回给我字段值和占位符文本值。某些字段即使在您填写后仍显示为灰色。其他字段具有完全不灰显的占位符文本。字体的大小、样式和灰色阴影似乎不一致。我可以在设计模式下编辑占位符文本字体样式和大小,但我无法弄清楚如何确保占位符文本变灰(相同的灰色阴影)并且字段值文本不是。此外,我正在考虑使用 VBA 宏自动化该过程。
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 对象属性。谢谢你。
编辑:
我创建了一个简单的宏,它遍历我的字段并更改占位符和值的字体,但它不会更改所有默认值。正如我在评论中提到的,当我选择某些内容时,我会通过选择默认情况下与占位符相同的第一个下拉项返回到占位符,格式会再次重置。这是脚本:
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 内容控制字体默认设置?
编辑:
循环浏览日期选择器字段并应用标准格式和占位符文本也很好。出于某种原因,当我包括:
If cc.Type = wdContentControlDropdownList Or cc.Type = wdContentControlComboBox Or cc.Type = wdContentControlDate Then
我的日期占位符文本的格式与内容控制值文本的格式相同(在我上面的示例中,它是 wdBlack。)