我正在尝试在MS Word 2016表单中创建“添加行”按钮,该按钮会将另一行添加到包含文本内容控件的表的底部。
仅添加一行不包含内容控件,并且复制前一行也将复制已添加到这些内容控件的任何文本,我都不想要。
我在某处读到可以将未填充的行另存为自动图文集,然后将自动图文集插入为新行。我只是找不到如何执行此操作。我将未填充的行另存为自动图文集,只是不知道如何使用VBA将其添加到表的底部。
此外,该表单将受到编辑保护。解锁表单所需的VBA代码然后重新锁定我已经拥有的表单。当我试图弄清楚这一点时,我现在暂时将其保留。
我尝试了以下代码,但始终收到类型不匹配错误。
Private Sub AddInmate_Click()
ActiveDocument.Tables(2).Select
NormalTemplate.AutoTextEntries("Inmate_Row").Insert _
Where:=ActiveDocument.Tables(2).Range.Rows.Last
End Sub
非常感谢大家提供的任何帮助。
答案 0 :(得分:0)
我要采取的方法是使用如下代码:
With Selection.Tables(1).Rows
'Insert an empty paragraph after our table, then replace it with a replica of the last row
With .Last.Range
.Next.InsertBefore vbCr
.Next.FormattedText = .FormattedText
End With
'Reset all content controls in the new last row
For Each CCtrl In .Last.Range.ContentControls
With CCtrl
If .Type = wdContentControlCheckBox Then .Checked = False
If .Type = wdContentControlRichText Or .Type = wdContentControlText Then .Range.Text = ""
If .Type = wdContentControlDropdownList Then .DropdownListEntries(1).Select
If .Type = wdContentControlComboBox Then .DropdownListEntries(1).Select
If .Type = wdContentControlDate Then .Range.Text = ""
End With
Next
End With
有关在与您类似的情况下实现此功能的完整ContentControlOnExit宏,请参见:http://www.msofficeforums.com/word-vba/27809-code-add-new-row-table.html#post87989
答案 1 :(得分:0)
尝试非常接近-它试图将新行“插入”在最后一行的“顶部”或“插入”最后一行。诀窍是获取表的Range
,然后将其折叠以使目标插入点紧靠表之后。当将表行粘贴/插入到现有表之后之后时,在同一段落标记内,Word会自动将它们合并到现有表中。
Private Sub AddInmate_Click()
Dim tmpl As Word.Template
Dim rngTbl As Word.Range
Set rngTbl = ActiveDocument.Tables(2).Range
rngTbl.Collapse wdCollapseEnd
Set tmpl = NormalTemplate
tmpl.BuildingBlockEntries("Inmate_Row").Insert _
Where:=rngTbl, RichText:=True
End Sub