微调 goto 书签 libreoffice 宏

Posted

技术标签:

【中文标题】微调 goto 书签 libreoffice 宏【英文标题】:fine tuning a goto bookmark libreoffice macro 【发布时间】:2017-09-13 18:18:22 【问题描述】:

我有一个 libreoffice 宏可以转到某个书签(“qui”)

sub vai_qui
ViewCursor = ThisComponent.CurrentController.getviewCursor()
Bookmark = ThisComponent.Bookmarks.getByName("qui").Anchor
ViewCursor.gotorange(Bookmark, False)
end sub

问题有两个:

    这是一个 libreoffice 宏,因此它也可以与 Calc 和 Base 一起运行,我希望避免 Calc 和 Base 中出现错误消息; 使用此宏将光标转到书签,但 Writer 的 焦点 不在光标上:我更愿意避免这种情况并专注于光标。

谢谢

【问题讨论】:

关于第二个问题:通过工具->宏->运行宏运行子程序时,光标转到书签,视图调整显示位置。这不是你想要的吗?如果您的文档中的行为不同,那么您是如何运行它的,最终关注的是什么? 我不知道如何或为什么,但事实是“视图调整以显示位置”,在我没有得到的长文档中光标上的焦点。 请描述重现第二个问题所需的条件,在 *** 上称为 MCVE。文档需要多长时间,您是如何运行宏的,运行后会看到什么? 1) 多长时间?超过约。 149 行(149 行或更少的行对焦即可)。 2)我如何运行宏:自动打开(当文档打开时)。 3) 焦点不在光标上,而是在文档的另一部分。 解决方案:如果我重新做宏,一切OK。所以我复制,我重复指令 2 次,所以它起作用了! 【参考方案1】:

正如你在LibreOffice forum***上所说的那样:

如果您没有 Writer 文档,请避免调用宏

检查文档类型

If NOT ThisComponent.supportsService("com.sun.star.text.TextDocument" ) Then
   Exit Sub  
End If

检查书签是否存在

oBookmarks = ThisComponent.getBookmarks()  
If NOT oBookmarks.hasByName("qui") Then

*** 交叉发布问题而不提及您寻求帮助的其他论坛,这是冒犯了那些利用空闲时间提供帮助的志愿者。

【讨论】:

虽然我同意交叉发布,但该部分应该是添加到问题的评论。答案应该just be answers,而不是对问题的批评。 谢谢你,Ngulam:你的回答解决了第一个问题。现在保留第二个。 ngulam 的解决方案现在无法与新版本的 LibreOffice 正常工作(版本:5.4.1.2 Build ID:1:5.4.1-0ubuntu1 - CPU 线程:4;操作系统:Linux 4.13; UI 渲染:默认;VCL:kde4;区域设置:it-IT (en_US.UTF-8);计算:组)。我收到一条错误消息:“BASIC 运行时错误。找不到属性或方法:supportsService”你能帮帮我吗?

以上是关于微调 goto 书签 libreoffice 宏的主要内容,如果未能解决你的问题,请参考以下文章

如何在 LibreOffice 中运行 python 宏?

无法在 LibreOffice 中运行 Python 宏

LibreOffice - 如何通过 python 宏创建文件对话框?

LibreOffice Writer 宏

创建带有嵌入宏的 LibreOffice 文档

libreoffice 基础宏参数打开关闭获取当前表单名称