编程的目的如下:
由于单位存在很多文件,都以数字或者字母命名,查阅的时候效率很低。我想把这些文件都集中到一起,逐个读取文档内容的标题,然后用这个标题重新命名该文档。
目前进度:
我现在已经能打开word文档,也能读取里面的内容。但是,我不知道用什么方法能返回文档里标题的样式,也就是它是“标题 1”还是“标题 2”,没有办法知道。我在msdn里找到两个函数,一个是set_style(),能设置段落的标题,还有一个是get_style(),但是它返回的是一个object,我没有办法从里面找到什么信息.
问题:
各位前辈高手,如果要读取文档段落的样式(标题)的话,用什么方法最好??如果是get_style(),这个方法如何使用,方便的话,能否给个小例子。
这个问题困扰我很久了,实在没办法了,才来麻烦大家。分我会多多准备的,请大家赐教。
由于单位存在很多文件,都以数字或者字母命名,查阅的时候效率很低。我想把这些文件都集中到一起,逐个读取文档内容的标题,然后用这个标题重新命名该文档。
目前进度:
我现在已经能打开word文档,也能读取里面的内容。但是,我不知道用什么方法能返回文档里标题的样式,也就是它是“标题 1”还是“标题 2”,没有办法知道。我在msdn里找到两个函数,一个是set_style(),能设置段落的标题,还有一个是get_style(),但是它返回的是一个object,我没有办法从里面找到什么信息.
问题:
各位前辈高手,如果要读取文档段落的样式(标题)的话,用什么方法最好??如果是get_style(),这个方法如何使用,方便的话,能否给个小例子。
这个问题困扰我很久了,实在没办法了,才来麻烦大家。分我会多多准备的,请大家赐教。
OutlineLevel 为1是,即为标题1。取Paragraph对象的Range.Text即可。参考如下:
Dim intI As Integer
For intI = 1 To objWord.ActiveDocument.Paragraphs.Count
If objWord.ActiveDocument.Paragraphs(intI).OutlineLevel = 1 Then
MsgBox(objWord.ActiveDocument.Paragraphs(intI).Range.Text)
Exit For
End If
Next
Dim xRange As Range
Dim xPosi, xIdx As Long
With ActiveDocument
' 先到文档的最开始
Set xRange = .GoTo(wdGoToPage, wdGoToFirst)
xPosi = xRange.Start: xIdx = 1
Do
' 定位到下一个标题级段落
Set xRange = .GoTo(wdGoToHeading, wdGoToAbsolute, xIdx)
' 如果前后两次的位置相同, 说明没有了下一个
If xRange.Start = xPosi Then Exit Do
' 在 "立即窗口显示段落的内容
Debug.Print xRange.Paragraphs(1).Range.Text
' 保存当前的位置以便进行比较, 位置序号指向下一个
xPosi = xRange.Start: xIdx = xIdx + 1
Loop
End With