Vba Word宏以解组文本框

Vba Word宏以解组文本框,vba,ms-word,Vba,Ms Word,我在一家残疾人服务办公室工作,我们经常做的一件事是放大从PDF转换而来的Word文档。为了简化这个过程,我一直在“编写”一个宏(实际上主要是从其他地方或宏录制器复制和粘贴位),以删除额外的段落分隔符或“规范化”字体样式/大小/间距等 通常,当我们将PDF文件转换为Word文件时,文本框中会出现一些文本。我希望能够删除所有文本框中的文本,并用纯文本替换它们。我一点也不在乎文本的格式,或者保留装饰性线条等等。我在搜索中发现了一些代码,这些代码适用于未分组的文本框,但我有一个文档,其中对文本框进行了分

我在一家残疾人服务办公室工作,我们经常做的一件事是放大从PDF转换而来的Word文档。为了简化这个过程,我一直在“编写”一个宏(实际上主要是从其他地方或宏录制器复制和粘贴位),以删除额外的段落分隔符或“规范化”字体样式/大小/间距等

通常,当我们将PDF文件转换为Word文件时,文本框中会出现一些文本。我希望能够删除所有文本框中的文本,并用纯文本替换它们。我一点也不在乎文本的格式,或者保留装饰性线条等等。我在搜索中发现了一些代码,这些代码适用于未分组的文本框,但我有一个文档,其中对文本框进行了分组

我发现了一个宏,它可以解组形状,包括文本框。但是当我运行宏时,解组行抛出一条错误消息;“运行时错误”-2147024891(80070005)':组已锁定且无法解组“我可以手动选择并解组文本框,除非我已手动将它们设置为在文档中对齐,此时选项卡中的“解组”选项变灰。如果我只将文本框复制到新文档并运行ungroup宏,它将按预期工作,但只有在我手动将组设置为非行内设置后才能工作。如果将其保留为串联,则宏会抛出相同的错误消息

有关守则:

Sub Ungroup
    Dim xNmbr As Integer
    Dim strText As String
    With ActiveDocument
    For xNmbr = .Shapes.Count To 1 Step -1
    .Shapes(xNmbr).Select
    .Shapes(xNmbr).ConvertToInlineShape
    .Shapes(xNmbr).Ungroup
    Next
    End With
End Sub
有人知道这是怎么回事吗?我知道这里还有另外一个问题,询问相同的错误消息,但是他们正在处理非文本的形状,所以他们的解决方案对我不起作用

这是一个与我试图编辑的文件相同的示例文件(我刚刚更改了文本;结构相同)

提前谢谢

ETA——这里有一些代码在我的示例文档中非常有效,但在其他文档中我尝试过删除文本框,而不是将其解组

Sub Ungroup()
    Dim xNmbr As Integer
    With ActiveDocument
    For xNmbr = .Shapes.Count To 1 Step -1
        .Shapes(xNmbr).Select
        Set thisshape = .Shapes(xNmbr)
    With thisshape.WrapFormat
        .Type = wdWrapSquare
    End With
Next
End With

Dim mydocument As Document
    Set mydocument = ActiveDocument
    Dim shp As Shape
    For Each shp In mydocument.Shapes
        If shp.Type = msoGroup Then shp.Ungroup
    Next shp
End Sub

最后更新:我让它工作了!我不知道是什么原因导致了这个问题,但只是删减了一些代码,它就正常工作了

Sub Ungroup()
Dim xNmbr As Integer
With ActiveDocument
    For xNmbr = .Shapes.Count To 1 Step -1
    .Shapes(xNmbr).Select
        Set thisshape = .Shapes(xNmbr)
        With thisshape.WrapFormat
       .Type = wdWrapSquare
    If thisshape.Type = msoGroup Then thisshape.Ungroup
    End With
    Next
End With
End Sub

Word有两个图形集合:
InlineShapes
Shapes
。只有不在线的内容才能分组/取消分组。您需要应用文本换行格式才能使用此命令。谢谢!这很有帮助。现在我有一个奇怪的问题。我在一个测试文档中使用了解组,但在其他文档中,它会删除所有文本框,而不是将它们解组。我不知道为什么。如何在这些注释中共享我的(部分)工作代码?编辑:我用部分有效的代码更新了我原来的帖子。你不应该把你的答案添加到原来的问题中。相反,如果信息对其他人有帮助,请将其放在答案框中。在堆栈溢出时,您被允许(甚至被鼓励)回答自己的问题:-)您还可以将它们标记为“答案”(或任何满足此要求的贡献)。一旦你有了足够的声望点数,你就可以在网站上投票选出你认为有用的任何贡献(问题和答案)。您可以返回问题的编辑部分并回滚所做的更改。啊,对不起。:)我会的。