如何按位置顺序得到一个word的所有书签?谢谢!

87607047 2012-09-17 03:17:01
妖哥以前的代码是按名称顺序的,如何按位置顺序得到书签列表呢?谢谢!

Variant vBookmarks = vDoc.OlePropertyGet("bookmarks");
// 书签的总数
int nBookmarkCount = vBookmarks.OlePropertyGet("Count");

// 遍历所有书签,并获取到名字,输出到界面上的Memo中
String strName;
for (int i = 0; i < nBookmarkCount; i++)
{
strName = vBookmarks.OleFunction("Item", i + 1).OlePropertyGet("Name");

Memo1->Lines->Add(strName);
}
...全文
252 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
87607047 2012-09-17
  • 打赏
  • 举报
回复
明白的了,不知道 vBookmark.OlePropertyGet("Start");这个用法,这种资料不知道哪里可以找到,关于ole 操作的资料太少了

谢谢妖哥!
ccrun.com 2012-09-17
  • 打赏
  • 举报
回复
OLE专业户来也!!!闲人退散。

int __fastcall CrnSortObject(TStringList *lst, int nIndex1, int nIndex2)
{
int n1 = (int)lst->Objects[nIndex1];
int n2 = (int)lst->Objects[nIndex2];

if (n1 < n2) return -1;
else if (n1 > n2) return 1;
else return 0;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 要打开的Doc文件名
WideString strDocName = L"D:\\ccrun\\csdn.doc";

// 创建Word对象
Variant vWordApp;
try
{
vWordApp = Variant::CreateObject("Word.Application");
}
catch(...)
{
MessageBox(Handle, "启动Word出错!",
Application->Title.c_str(), MB_OK | MB_ICONERROR);

return;
}

// 使Word界面可视
vWordApp.OlePropertySet("Visible", true);

// 打开指定的Word文档
Variant vDoc = vWordApp.OlePropertyGet("Documents").
OleFunction("Open", strDocName);

// 获取所有书签对象
Variant vBookmarks = vDoc.OlePropertyGet("bookmarks");
// 书签的总数
int nBookmarkCount = vBookmarks.OlePropertyGet("Count");

// 遍历所有书签,并获取到名字和起始位置
Variant vBookmark;
String strName;
int nStart;
TStringList *lst = new TStringList;

for (int i = 0; i < nBookmarkCount; i++)
{
vBookmark = vBookmarks.OleFunction("Item", i + 1);
strName = vBookmark.OlePropertyGet("Name");
nStart = vBookmark.OlePropertyGet("Start");

lst->AddObject(strName, (TObject *)nStart);
}

// 根据起始位置排序
lst->CustomSort(CrnSortObject);

// 将排序后的结果添加到Memo中
Memo1->Lines->Assign(lst);

delete lst;

// 后续代码依旧略过
// ...
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧