delete可以用in批量删除吗_word批量去除文本框保留文本

ef5bc20211640850efd3a7dd5b988068.png

word批量去除文本框保留文本

文本框一般以浮动的形式(即文字环绕方式为四周环绕、紧密环绕、衬于文字上方等)存在于文档中,选中文本框时可以看到在它的左侧有一个锚定标记,锚标总是在某一个段落的开头位置,表示浮动的文本框锁定于该段落,如图。

e0c04255b09ab171fb6f14a440539a54.png

如果一个文档中存在大量文体框,需要去除文本框而保留其中的文字的话,在编写代码时,可以根据文本框存在锚定标记这一特点,把文本框内的文本放于锁定段落的后面,再删除文本框。

利用VBA代码批量去除文本框保留文本,不能保证文本的顺序是正确的,所以事后需要检查。下面是代码。

Sub 批量去除文本框()
'批量去除文本框,保留文本。嵌入式或浮动式的文本框都可以处理,但存在组合的文本框时无法处理。
Dim oshap As Shape, i&
Application.ScreenUpdating = False
If ActiveDocument.Shapes.Count > 0 Then
    For i = ActiveDocument.Shapes.Count To 1 Step -1 '从最后一个开始往前处理,因为文本框一般为浮动式的,从前往后处理,会引起后面文本框位置的变化。
        Set oshap = ActiveDocument.Shapes(i)
        If oshap.TextFrame.HasText Then '存在文本时处理。因为shapes不仅包含文本框,也包含其他形状、图片等对象,所以需要判断。
            oshap.Anchor.Paragraphs(1).Range.InsertAfter oshap.TextFrame.TextRange '在文本框锁定段落的后面插入文本框中的文本。
            oshap.Anchor.Paragraphs(1).Next.Range.Font.ColorIndex = wdDarkRed '把文本设置为红色,以便后面检查。因为可能存在错乱。
            oshap.Delete '删除文本框
        End If
    Next i
End If
Application.ScreenUpdating = True
End Sub
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值