本文主要是介绍Word中使用VB宏将文本框和图文框中的文字图片转换为普通段落,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
视频演示:
【Word小技巧】如何批量去除图文框、文本框,保留纯文本?
转换前:Word文档中有很多文本框,不方便编辑
转换后:在文本框中的文本和图片都变成了普通段落
这一操作可以通过Word自带的“宏”功能实现
以下是实现这一功能所需的VB宏代码分享:
Sub 【通用】图文框和文本框转文本和图片()'图文框转文本
If MsgBox("是否将图文框转文本", 4 + 32, "提示") = vbYes Then
Dim Fra As Frame
For Each Fra In ActiveDocument.Content.Frames
Fra.Delete
Next
End IfIf MsgBox("是否将文本框转文本", 4 + 32, "提示") = vbYes Then'文本框转文本?(2023-6-3新增提取图片功能,2023-6-5修改)Dim oDoc As Document
Dim oShape As Shape
Dim oRange As Range
Dim shapesArray() As ShapeSet oDoc = ActiveDocument
ReDim shapesArray(1 To oDoc.Shapes.Count)' 将形状对象存储到数组中
For i = 1 To oDoc.Shapes.CountSet shapesArray(i) = oDoc.Shapes(i)
Next i' 阶段1:遍历数组中的所有形状,处理图片
For i = LBound(shapesArray) To UBound(shapesArray)Set oShape = shapesArray(i)' 检查形状是否为文本框If oShape.Type = msoTextBox Then' 如果文本框中有图片,将图片移动到文本框所在位置If oShape.TextFrame.TextRange.InlineShapes.Count = 1 ThenSet oRange = oShape.Anchor.Paragraphs(1).RangeoShape.TextFrame.TextRange.InlineShapes(1).SelectSelection.CutoRange.Collapse wdCollapseStartoRange.PasteEnd IfEnd If
Next i' 阶段2:遍历数组中的所有形状,处理文字和空文本框
For i = LBound(shapesArray) To UBound(shapesArray)Set oShape = shapesArray(i)' 检查形状是否为文本框If oShape.Type = msoTextBox Then' 如果文本框中有文本,则提取到文本框所在位置If Len(oShape.TextFrame.TextRange) > 0 ThenSet oRange = oShape.Anchor.Paragraphs(1).RangeoRange.InsertBefore oShape.TextFrame.TextRange.TextEnd If' 删除文本框oShape.DeleteEnd If
Next i'将全文档改为单倍行距Selection.WholeStoryWith Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceSingleEnd WithEnd IfEnd Sub
如果你不了解“宏”,不知道如何使用宏,请参见我的这2个视频↓
1.WPS如何使用VB宏?
2.如何把分享的宏代码写入电脑中,以及注意事项
另外:附上使用宏代码前后的Word文档,供读者测试。
【Word小技巧】使用VB宏将文本框和图文框中的文字图转换为普通段落 https://wwpi.lanzouk.com/b06pgj8sd
密码:bwfo
这篇关于Word中使用VB宏将文本框和图文框中的文字图片转换为普通段落的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!