【问题标题】:fine tuning a goto bookmark libreoffice macro微调 goto 书签 libreoffice 宏
【发布时间】: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

问题有两个:

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

谢谢

【问题讨论】:

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

标签: libreoffice bookmarks uno libreoffice-basic


【解决方案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”你能帮帮我吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多