如何通过编程(VBA)来获取文件的结构呢-类似于将文件的“文档结构图”抽取出来?请高手解答!作过一些Word的开发,其它的一些功能都能想到办法解决。但对于这个问题却一直没有好很好的办法。Word本身具有自动编写文件目录的功能,通过先自动编写目录再分析目录以获取文件结构的这种方法感觉不太友好,实际上现在的问题就是:Word的自动目录是如何完成的。通过录制宏只能得到一行简单的ActiveDocument.TablesOfContents.Add 语句,其内部的分析处理过程却不得而知。

解决方案 »

  1.   

    怎么老有人问这个而不看以前的贴子呀?见我在这个帖子的回答:http://community.csdn.net/Expert/TopicView.asp?id=3076393简而言之,就是枚举文档中的所有段落,段落(paragraph)的outlinelevel属性可以告诉你该段落的级别。
      

  2.   

    !@#$%...,才发现这是很老的贴子,这个leesheng(小胜)要干啥呀?
      

  3.   

    To  techgopher:我看了你给出链接的解决办法,我正是这样做的。但这种方式的效率非常低而且还会出现误判断。Word自身形成文档结构图的方法肯定不是这样的。
      

  4.   

    同意你的观点。问题在于不是所有的Word功能可以通过对象模型实现。另外以上是不用Word的TOC域的办法。如果用TOC域的话,结果应该更正确,且快一些:
    1)插入一个TOC域
    2)得到该TOC域的结果,并保存
    3)删除该TOC域缺点是拿到的是整体文档的结构,而没有文档中任意段落的信息。如果你需要以上代码的话,我可以给你一些范例。
      

  5.   

    To  techgopher:首先谢谢!这种通过人为的增加域、再分析、再删除域的办法可能是能解决问题。但感觉还是不爽,只能说是通过一定的技巧去实现的。不过,也许 WORD 的对象模型就是没有提供提取文档结构图的功能吧。我的程序已经用 For Each oPara In Document.Paragraphs 这样来做了。慢就慢吧,不想改了。