1

私はオフィス内から通常のオフィスとPythonの両方のマクロを実行できることを確認しましたが、こんにちは世界1)をコマンドラインから起動します。libreoffice - Gnu/Linuxコマンドラインから相互参照を挿入するためのマクロ(python)を実行する

私は、コマンドラインからオープンオフィスのマクロを実行する方法をGoogleで検索して、ここで他の回答を見て、私はまだ完全には明らかではないよいます

https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=8232 が使用することを示唆している:

office writer.odt "macro://Standard.Module1.Macro1()"

私も見てきました:

office "macro://Standard.Module1.Macro1()" writer.odt

どちらの方法でも、文書を開き、マクロを実行したりエラーを報告したりすることはありません。

一方、How to call an existing LibreOffice python macro from a python script は、ポートでリスンを受信し、それを介して通信することを提案しています。

私はそこまで私はまだ私はコンテキストにRHEL7を使用してい

(私の他の質問 asciidoc: is there a way to create an anchor that will be visible in libreoffice writer?ごとに)アンカーを挿入する方法を説明しますAPIドキュメントを見つける必要が得ることができる場合。オフィス基本的なマクロと連携

更新

oowriter "foo.odt" macro:///Standard.Module1.addXref

。 私はまだPythonの1つを理解していません。

1つの問題は、表示するデバッグ情報が見つかりません。どこにログファイルがありますか?

別の問題は、使用するPythonのバージョンです。 RHELパッケージは、Python 2.7のサイトパッケージをインストールします。

 
>rpm -q --whatprovides /usr/bin/writer 
libreoffice-writer-4.3.7.2-5.el7_2.1.x86_64 

>rpm -ql libreoffice-pyuno-4.3.7.2-5.el7_2.1 
... 
/usr/lib64/python2.7/site-packages/uno.py 

Libreoffice5.1は、ディストリビューションと3.5が含まれています

>/opt/libreoffice5.1/program/python --version Python 3.5.0

ので、既知のバージョンとのpythonのペア知らバージョンことを私はハロー世界のPythonの例を探していますから開始しますオフィス。好ましくは、上の2つのいずれか(ライター4.3.7 &、Python 2.7?またはライター5.1 &、Python 3.5)。

アップデート2

office5でインストールようpython3.5を使用します。1私は、次を使用して、ハローワーキングの世界を持っている:

import uno 

# get the uno component context from the PyUNO runtime 
localContext = uno.getComponentContext() 

# create the UnoUrlResolver 
resolver = localContext.ServiceManager.createInstanceWithContext(
      "com.sun.star.bridge.UnoUrlResolver", localContext) 

# connect to the running office 
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext") 

smgr = ctx.ServiceManager 

# get the central desktop object 
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop",ctx) 

# access the current writer document 
model = desktop.getCurrentComponent() 

# access the document's text property 
text = model.Text 

# create a cursor 
cursor = text.createTextCursor() 

# insert the text into the document 
text.insertString(cursor, "Hello World", 0) 

これは、経由して、オープンオフィスのいずれかのバージョンで動作します:

/usr/bin/oowriter --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"

だから、最後の部分は、相互参照を追加することです。

答えて

0

コマンドに余分なスラッシュが必要なようです。これはUbuntuの上で私の仕事:

My Macros & Dialogs/StandardModule1という名前のモジュール内でこのメソッドを呼び出します
lowriter "Untitled 1.odt" macro:///Standard.Module1.SayHello 

:上記のアプローチのみBasicマクロのために働く

Sub SayHello 
    MsgBox("Hello, World!") 
End Sub 

を。 Pythonマクロの場合、標準のコマンドラインアプローチは、Officeのリスニングインスタンスに接続することです。警告:これは、Office内からの実行よりも(おそらくは10倍)遅くなります。

あなたが提案したリンクは、別のPythonスクリプトからPythonマクロを呼び出す方法を示しています。これは、ここで必要なものより複雑です。代わりに、接続コード(localContext = uno.getComponentContext()で始まる)とマクロコードを同じスクリプトに入れてください。スクリプトの内容の例については、「Pythonシェルを使って最初に遊ぶ」(http://christopher5106.github.io/office/2015/12/06/openoffice-libreoffice-automate-your-office-tasks-with-python-macros.html)を参照してください。

限りアンカーの作成など、アンカーとして機能することができるのLibreOfficeの異なるオブジェクトの数があります

  • 見出し
  • ブックマーク - example code to create them
  • テーブルとフレーム
  • セクション
  • イメージとOLEオブジェクト

このリストはHow do I check for broken internal links in Star Basic?からコピーされました。あなたの他の質問では、壊れたリンクを確認することについても尋ねました。そうすればうまくいけば助かります。

ハイパーリンクを作成する1つの方法は、一部のテキストのHyperLinkURLプロパティを編集することです。たとえば、MyBookmarkというブックマークがあるとします。現在のLibreOfficeは、Python 3を使用し、OpenOfficeのは、Python 2

を使用し、使用するためのPythonのバージョンかに関する

viewcursor = currentController.getViewCursor() 
viewcursor.HyperLinkURL = "#MyBookmark" 

編集:次のコードは、ハイパーリンクに現在選択されているテキストを変更します

デバッグ情報については、Basic IDEでチェックポイントを設定できます。 Pythonの場合、私はlogging moduleを使用します。 OpenOfficeにはさまざまなログファイルもありますが、私は通常それらを参考にしていません。

Pythonの問題については、私が投稿したリンクを試しましたか?もしそうなら、あなたはどこまで手に入れましたか?

多くのRHELの例はありません。最初にUbuntuのようなデスクトップディストリビューションで作業するようにして、その方法をRHELに適応させてください。

+0

oowriter "foo.odt"マクロ:///Standard.Module1.addXrefは、オフィスの基本マクロで動作します。 –

+0

(http://stackoverflow.com/questions/37611030/how-do-i-check-for-broken-internal-links-in-star-basic)にリンクされている 'coool'スクリプトは面白いですが、使用するPythonのバージョンを指定します。 2.7.5ではなく3.x –

+0

'coool'スクリプトが動作するように、私はコードをダウンロードし、' configparse'のすべてのものをコメントアウトし、Python 3ライブラリを使うように更新しました。それは私に約1時間かかりました。 –

関連する問題