如何在word中使用VBA得出每一页都多少行文字啊

如何在word中使用VBA得出每一页都多少行文字啊,第1张

Sub LinesOfPage()

'方法很简单,就是数

Dim PageNo As Integer, Lines As Integer, MovedLines As Integer

'先确定现在的页码

PageNo = SelectionInformation(wdActiveEndAdjustedPageNumber)

'行计数清零

Lines = 0

Do

'向上挪一行,如果到头了没挪动或挪到上一页去了就停止

If SelectionMove(wdLine, -1) = 0 Or PageNo <> SelectionInformation(wdActiveEndAdjustedPageNumber) Then Exit Do

'还在同一页行数加1,继续挪

Lines = Lines + 1

Loop

'向下挪回开始的位置

SelectionMove wdLine, Lines

Do

'现在开始向下挪,,如果到尾了没挪动或挪到下一页去了就停止

If SelectionMove(wdLine, 1) = 0 Or PageNo <> SelectionInformation(wdActiveEndAdjustedPageNumber) Then Exit Do

'还在同一页行数加1,继续挪

Lines = Lines + 1

Loop

'最后Lines就是这页的行数

End Sub

打开pdf文档,查找到指定字符串,然后插入书签

以下代码先设置一个待查找字符串,用findtext方法查找,然后用createchild方法插入书签。代码的运行环境为Win81,Word2010 VBA,Acrobat Pro DC,在本机测试成功。

使用到的主要方法为AVDocFindText和BookMarkcreateChild。

AVDocFindText有4个参数:

szText,要查找的字符串

bCaseSensitive,是否区分大小写,正数为区分,0为不区分

bWholeWordsOnly,是否匹配整个单词,正数为匹配,0为不匹配

bReset,查找开始的位置,正数则从第一页开始,0则从当前页开始

BookMarkcreateChild有3个参数

cName,用户在导航面板中看到的书签的名称。

cExpr,单击书签时要执行的表达式,为JavaScript

nIndex,(可选)在书签的子数组中,创建新子书签的基于0的索引。默认值为0。

Sub Pdf添加书签()

'为某书添加书签

Dim App As New AcrobatAcroApp

Dim PDoc As New AcrobatAcroPDDoc, AVDoc As New AcrobatAcroAVDoc

Dim Jso As Object

Dim BMark As Object '不能声明为AcrobatAcroPDBookmark,否则createchild方法不可用。

Dim PFile As String, WordTF As String, PageNum As Long

PFile = "F:\指定文件pdf" '要插入书签的pdf文件

WordTF = "要查找的"

If PDocOpen(PFile) Then

Set Jso = PDocGetJSObject

Set AVDoc = PDocOpenAVDoc("")  '获得一个可见文档

JsobookmarkrootRemove '移除原有的所有书签

End If

If AVDocFindText(WordTF, 0, 0, 1) Then '从第一页开始,如果找到了字符串WordTF一次

PageNum = AVDocGetAVPageViewGetPageNum '获得当前页码

Set BMark = Jsobookmarkroot '设置书签根对象

BMarkcreateChild WordTF, "thispageNum=" & PageNum, 0 '创建一个书签

PDocSave 1, PFile

End If

PDocClose

AppCloseAllDocs

AppHide

AppExit

Set AVDoc = Nothing

Set PDoc = Nothing

Set App = Nothing

Set BMark = Nothing

Set Jso = Nothing

End Sub

目前我想到的方案是利用Word里面的“索引”功能。

1、选中需要提取的文字,执行菜单命令“插入-引用-索引和目录”;

2、在“索引”选项页里面选择单击按钮“标记索引项”;

3、指定“选项”为“当前页”,根据需要可以指定提取之后显示的页码格式为加粗或者倾斜,单击“标记”;

4、此时标记索引项窗口并不会关闭,而且你还能在文档中找到并选中下一个需要提取的文字,重复步骤3;

5、如果没有其它需要提取的文字了,单击“关闭”;

6、在需要插入索引表的地方,执行菜单命令“插入-引用-索引和目录”,根据需要设置索引表的格式(比如分栏、对齐、缩进等风格),然后单击“确定”。

这样所有标记过索引的文字以及它们所在的页码就都提取出来了。

如果需要提取的文字有很多,那么或许也可以用VBA宏来自动标记索引(即相当于自动完成上面的1-5步骤)。但是前提是这些文字必须都有非常特定的格式,即可以保证当前文档中凡是具有这个格式的文本,都是需要提取索引的文本。

如果楼主感兴趣的话,可以补充提问或者和我联系,并请告知Word版本号。

_______________________

补充:

下列VBA代码可以自动为当前文档中的所有红色文字建立索引条目,并在当前光标位置处插入带文字条目以及对应页码的索引表:

Option Explicit

Sub AutoMarkIndexForAllRedText()

Dim oSaveSelection As Range

Set oSaveSelection = SelectionRange

SelectionStartOf wdStory

SelectionFindClearFormatting

SelectionFindFontColor = wdColorRed ' 在这里可以设置更多的匹配格式,如字体、字号等

While SelectionFindExecute(FindText:="", Forward:=True, Format:=True)

ActiveDocumentIndexesMarkEntry(SelectionRange, SelectionRangeText)Select

SelectionCollapse wdCollapseEnd

Wend

oSaveSelectionSelect

ActiveDocumentIndexesAdd SelectionRange

MsgBox "完成!"

End Sub

如果楼主对于这个代码生成的索引表样式不太满意,也没关系。因为现在所有索引条目已经建好,所以只需把自动生成的索引表删除后用Word自己的“插入-引用-索引和目录”命令来重新生成符合自己要求样式的索引表即可。

'一、表格标题一般应该是题注,判断题注内容

SelectionParagraphs(1)Style = "题注"

InStr(1,SelectionParagraphs(1)RangeText,"表") <> 0 '这里方法很多,可以通过域判断,也可以根据其他规则判断

'二、获取题注的结尾

styleEnd = SelectionParagraphs(1)RangeEnd

'三、判断表注后面是否为表格

'参考2#

ActiveDocumentRange(styleEnd, styleEnd + 1)Information(wdWithInTable)

'四、请尽量少使用Selection

'Selection使用得越少,代码效率越高

Sub test()

For Each i In ActiveDocumentInlineShapes

iSelect

MsgBox SelectionInformation(wdActiveEndPageNumber)

Next

End Sub

以上就是关于如何在word中使用VBA得出每一页都多少行文字啊全部的内容,包括:如何在word中使用VBA得出每一页都多少行文字啊、如何用VBA实现打开PDF并查询数据,获取页码,或是提取该页面为新文件、word 怎样提取特定格式的文本及所在的页码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10088254.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存