当前位置: 首页 > 知识库问答 >
问题:

使用VBA的Word文档迭代

龙俭
2023-03-14

我有一个word文档,其中包含许多由html标记定义的html文档。我想创建一个数组或范围集合,每个范围由一个html文档组成。例如,以下是Word文档:

<html> <head> <title> </title> </head> <body> HTML Doc 1 </body> </html>
<html> <head> <title> </title> </head> <body> HTML Doc 2 </body> </html>
<html> <head> <title> </title> </head> <body> HTML Doc 3 </body> </html>

等等。我想用一系列范围来填充rngHTMLDocs()As Range,每个范围包含每个打开和关闭html标记中的文本。

我创建了以下代码,试图遍历定义这些范围的整个文档,但它只继续选择超文本标记语言Doc 1。我想我可能以错误的方式接近整个迭代。不管怎样,这是代码:

Set rngDocContent = ActiveDocument.Content
intCounter = 1
With rngDocContent.Find
    .ClearFormatting
    .Text = "<html>"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Execute
    Do While .Found = True
        Set rngTemp = rngDocContent.Duplicate
        rngTemp.Select
        Selection.Extend
         With Selection.Find
             .ClearFormatting
             .Text = "</html>"
             .Replacement.Text = ""
             .Forward = True
             .Wrap = wdFindAsk
             .Execute
        End With
        Set rngHtmlDocs(intCounter) = Selection.Range
        Selection.Start = Selection.End
        intCounter = intCounter + 1
     Loop
 End With

在为整个文档设置rngDocContent并使用wdFind继续时,我曾希望它实际上会继续在文档中搜索打开html标记的下一个实例,但事实并非如此。提前感谢您可能提供的任何帮助。

共有2个答案

杜经艺
2023-03-14

我发现我缺少的是。在循环语句之前执行语句,因为这是导致原始循环的原因。查找以继续。我还添加了一个redimpreserve语句,因为我事先没有计算文档中包含了多少HTML文档。因此,现在循环的结尾如下所示:

       Set rngHtmlDocs(intCounter) = Selection.Range
       Selection.Start = Selection.End
       intCounter = intCounter + 1
       ReDim Preserve rngHtmlDocs(intCounter)
       .Execute
    Loop
End With

希望这对某人有帮助。

贡英华
2023-03-14

在这种情况下,范围对象集合是否更适合您?创建一个集合对象,搜索的每次迭代都会创建一个新的范围对象,然后将其添加到集合中。这样每个html文档都可以称为colRanges(n)?

 类似资料:
  • 我有一个当前格式的文档 标题 字幕 H1 样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本 H2 样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本样本文本 H3 样本文本样本文本样本文本样本文本样本文

  • 我想用vba来保护我的word文档。 的确,这是可能的,但我已经通过以下链接搜索了如何取消文档保护: http://www.aurelp.com/2015/04/01/how-to-unlock-a-microsoft-word-document-step-by-stepsolved/ 有没有其他方法可以成功地保护文档不被未经授权的用户使用?

  • 我已经很多年没有使用VB了,所以如果这是显而易见的,请原谅我。我正在尝试编写一个word vba宏,以便在模板中使用,该模板将显示一个userform,然后导入fileA的内容。docx,fileB。docx或fileC。docx取决于用户表单。(之后我将使用书签填写一些表单数据,我不知道这是否相关)。文件A、B和C将包含一些基本格式(如列表)的文本,但没有什么特别之处。 我在网上看到的解决方案可

  • 我需要循环一些word文档,并从word文档中提取图像,并将其保存在单独的文件夹中。我尝试过将它们保存为超文本标记语言文档的方法,但它不太适合我的需求。 现在,我使用inlineshapes对象循环浏览图像,然后将它们复制粘贴到publisher文档上,然后将它们保存为图像。但是,在运行脚本时,我会遇到运行时自动化错误。对于使用Publisher运行时库,我尝试了早期绑定和晚期绑定,但都遇到了错误

  • 我想编写一个通用方法,通过循环段落和形状来提取从word文档到文本文件的所有内容。 我能够使用下面的代码解析90%的文档。但是,此代码不会读取少数表中的内容。 我无法从MS word文档中提取表格中的少量文本。这个问题只涉及一些文本和表格,我可以用我的代码阅读文档中的大部分内容。 Word文档位于以下链接中- https://drive.google.com/file/d/0B1C7jj9dLG2

  • 每个人。我需要一个VBA代码来将excel数据转换为PDf到word doc,我写了一个宏,将excel打印为pdf,但现在我想从该pdf打印为word,所以简短的版本,Excel到PDF到Word。所有这些都是为了我想保留excel数据的格式