如果您要处理其他人的文档,则可能需要删除这些文档中的文本框。如果文档中只有一个或两个文本框,则选择并删除它们并不难。但是,如果有30、40或更多的文本框怎么办?

单独删除它们会很快变得乏味。

一种可能的解决方案是“蛮力”方法。请按照下列步骤操作:

。在文档中,按Ctrl + A。整个文档被选中。

。按Ctrl + C。该文档现在位于剪贴板上。

。打开一个新的空白文档。

。确保显示功能区的“主页”选项卡。

。单击“粘贴”工具下方的向下箭头(位于功能区的左侧),然后选择“选择性粘贴”。 Word将显示“选择性粘贴”对话框。 (请参见图1。)

。在格式列表中,选择“未格式化的文本”。

。单击确定。

减去文本框的文档文本现在位于新文档中。这种方法的明显缺点是,原始文档的其他格式也丢失了,您必须重新格式化整个文档。 (我告诉过您,这是蛮力方法。)

如果只想摆脱文本框,那么最快的解决方案是使用宏。以下宏将快速删除文档中的所有文本框:

Sub RemoveTextBox1()

Dim shp As Shape     For Each shp In ActiveDocument.Shapes         If shp.Type = msoTextBox Then shp.Delete     Next shp End Sub

您应该意识到此宏将删除所有文本框及其内容。换句话说,如果使用文本框放置文本,则该文本框中的文本将与文本框本身一起删除。

如果您希望将文本从文本框传输到文档,则在删除文本框之前,可以对上述宏进行稍作修改:

Sub RemoveTextBox2()

Dim shp As Shape     Dim oRngAnchor As Range     Dim sString As String

For Each shp In ActiveDocument.Shapes         If shp.Type = msoTextBox Then             ' copy text to string, without last paragraph mark             sString = Left(shp.TextFrame.TextRange.Text, _               shp.TextFrame.TextRange.Characters.Count - 1)

If Len(sString) > 0 Then                 ' set the range to insert the text                 Set oRngAnchor = shp.Anchor.Paragraphs(1).Range                 ' insert the textbox text before the range object                 oRngAnchor.InsertBefore _                   "Textbox start << " & sString & " >> Textbox end"

End If             shp.delete         End If     Next shp End Sub

完成此宏后,您可以搜索“文本框开始”,并且您将位于文本的开头,该文本曾经位于现在已从文档中删除的文本框中。然后,您可以编辑文本,以便根据需要显示文本。还应了解,文本中的任何“特殊”内容(例如表格)都会被宏转换为普通文本。这意味着该宏可能会导致需要做大量工作,需要格式化已传输的文本。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(9169)适用于Microsoft Word 2007、2010和2013。您可以在此处找到适用于Word的较早菜单界面的本技巧的版本:

链接:/ word-Removing_All_Text_Boxes_In_a_Document [删除文档中的所有文本框]。