ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 898|回复: 1

[求助] excel vba中如何定位word文档正文第一个段落?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-21 20:07 | 显示全部楼层 |阅读模式
各位大神,下位这段代码目的是模拟点击word文档的目录,然后查找到正文的第一个外,但以下三句代码均无法执行,有何解决办法?

                       Selection.MoveDown unit:=wdParagraph     '//运行提示不支持
                        FirstTextParaNum = iParaCount(Selection.Range)    '//运行提示错误参数?
                        FirstTextParaNum = Doc.Range(0, Selection.Paragraphs(1).Range.End).Paragraphs.Count '/运行提示不支持

代码原文:
Sub findFirstpara1()
    Dim wordApp  As New Word.Application, Pa As Word.Paragraph
    Dim Doc As Document, Ascode&, S1$, Complaintext$, Txt$
    Dim PC_before_click%, PC_after_click%
    Dim GotContent As Boolean
   
    Set ResultSht = ThisWorkbook.Sheets("Result") '//
    FPath = "D:\temp\"
    Set Fso = CreateObject("scripting.filesystemobject") '//
    Set ff = Fso.getfolder(FPath)   '//提取FPath目录下的全部文件
    For Each f In ff.Files
        Set Doc = wordApp.Documents.Open(FPath & f.Name) '//逐个打开每个word文件
        wordApp.Visible = True
        With Doc
            fieldsCnt = .Fields.Count
            For Each Field In .Fields
                With Field
                    Debug.Print .Result
                    If GotContent = True And .Index = 2 Then
                        .DoClick   '/点击目录中第一行
                        '//计算点击目录后链接到的段落的段落编号
                        Selection.MoveDown unit:=wdParagraph     '//运行提示不支持
                        FirstTextParaNum = iParaCount(Selection.Range)    '//运行提示错误参数?
                        FirstTextParaNum = Doc.Range(0, Selection.Paragraphs(1).Range.End).Paragraphs.Count '/运行提示不支持
                    End If
                    If InStr(1, .Code, " TOC \o") > 0 And Mid(.Result, 2, 1) = "1" Then GotContent = True '/判断命中目录域
                End With
            Next
            .Close
        End With
        Set Doc = Nothing
    Next f
    Doc.Paragraphs(FirstTextParaNum).Range.Select
    MsgBox ("The First Paragraph of Text is " & FirstTextParaNum & ". ")

End Sub
Function iParaCount(oRange As Range) As Integer
    oRange.SetRange 0, oRange.End
    iParaCount = oRange.Paragraphs.Count
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-24 21:05 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 04:24 , Processed in 0.027091 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表