如何在 Libre Office Basic 中创建一个跳转到文档末尾的宏

How to create a macro to jump to the end of a document in Libre Office Basic

每次打开 Libre Office 文档添加更新时,我都必须按 CTRL+END 才能跳转到文档底部。我想添加一个跳转到底部的按钮,但它使用的 Basic 不是 VBA,所以我很困惑。谁能给我一个子? 作为事后的想法;我可以在文档启动中添加说明吗?光标跳转到文件的底部?请原谅我的裤子命名约定,我还是绿的! 我尝试了离线帮助无济于事。接下来,我尝试了 Google 但找不到要匹配的确切子项。然后我订阅了 TheDocumentFoundation,并看到了一个类似 SO 的问答论坛。 discobot 没有帮助! 我还尝试录制一个可以正常工作的宏。子代码为:

    sub Main
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher =    createUnoService("com.sun.star.frame.DispatchHelper")

    dispatcher.executeDispatch(document, ".uno:GoToEndOfDoc", "",      0, Array())
    end sub

但是我无法将命令添加到 document.init 或启动。

其实把光标移动到文档末尾的宏写起来更容易一些。每个文档都有一个controller. The text document controller has a "view cursor". You can control this cursor using its methods,在这种情况下你需要.gotoEnd()方法。

所以代码可以这样写:“如果这个文档是一个文本文档,那么获取它的控制器,从控制器中取出光标,让光标跳转到文本的末尾”

Sub jumpToEnd(Optional oEvent As Variant)
    If  ThisComponent.SupportsService("com.sun.star.text.TextDocument") Then
        ThisComponent.getCurrentController().getViewCursor().gotoEnd(False)
    EndIf 
End Sub

这个宏的最佳位置是“我的宏”下的标准库中的某个模块——这个库将在启动办公室后立即加载,并且随时可以执行宏。 (如果你想运行这个宏只用于一个文档,那么你可以把它放在这个文档的标准库中)

要自动 运行 宏,请使用“工具”-“自定义”-“事件”选项卡

您可以在此处指定是在打开一个特定文档还是在打开任何文档时执行宏。

既然您知道如何执行此操作,您可能会同意按 Ctrl+End 会容易得多。