ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

请教守柔:如何确定一个书签的索引号?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-8-21 10:08 | 显示全部楼层 |阅读模式

请教守柔:如何确定一个书签的索引号?

我想用Delphi调用VBA代码访问word文档中的书签,但是发现Delphi不支持用书签名称,只支持书签索引号,而且书签的索引号排序很杂乱,无章可循。请教守柔版主,书签的索引号是如何规定的?

TA的精华主题

TA的得分主题

发表于 2005-9-11 16:06 | 显示全部楼层
以下是引用pH7在2005-8-21 10:08:15的发言:

请教守柔:如何确定一个书签的索引号?

我想用Delphi调用VBA代码访问word文档中的书签,但是发现Delphi不支持用书签名称,只支持书签索引号,而且书签的索引号排序很杂乱,无章可循。请教守柔版主,书签的索引号是如何规定的?

这个问题问得好怪啊!

VBA访问WORD,你还是用的WORD的VBA啊,无非是后台引用了WORD而已,你其中的对象,属性与方法,就是WORD中的对象属性与方法了。

对于索引号的问题,我归纳了一下,请楼主看一下:

用 Bookmarks(index) 可返回单独的 Bookmark 对象,其中 index 是书签名称或索引序号。书签名称的拼写必须完全匹配(但大小写不必匹配)。

索引序号代表书签在 Selection 或 Range 中的位置,对 Document 对象来说,索引序号代表书签在“书签”对话框的书签列表内的位置。该列表按字母顺序排列(单击“名称”可对书签列表按字母顺序进行排序)。下列示例显示 Bookmarks 集合中第二个书签的名称。

MsgBox ActiveDocument.Bookmarks(2).Name

返回书签编号,该书签位于指定的所选内容或区域的开始位置;如果没有相应的书签,则本属性返回 0。编号对应于书签在文档中的位置,1 对应于第一个书签,2 对应于第二个,以此类推。Long 类型,只读。

Sub Example()

Dim i As Bookmark

For Each i In ActiveDocument.Bookmarks

Debug.Print i.Name

Next

End Sub

Sub kk()

MsgBox Me.Bookmarks(2).Name

Me.Bookmarks(2).Range.Select

MsgBox Selection.BookmarkID

End Sub

在示例2过程中,MsgBox Me.Bookmarks(2).Name 返回的是文档(DOCUMENT)的第二个书签名,它与插入/书签对话框中的顺序是一致的;而Me.Bookmarks(2).Range.Select:

MsgBox Selection.BookmarkIDBookmarkID返回的是RANGE(SELECTION)对象中的书签索引号,它与书签对应的RANGE对象在文档中的位置有关,RANGE(START)在前的,书签索引号位置在前面。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-11-23 18:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 00:04 , Processed in 1.045628 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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