2

Writerでは、テキストを検索したいときに、ビューをビュー/ウィンドウの上部に配置したいと思います。次のコードを使用してOpen/Libre Officeマクロを選択範囲にスクロールする

document = ThisComponent.CurrentController.Frame 
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 

dim args1(1) as new com.sun.star.beans.PropertyValue 
args1(0).Name = "SearchItem.SearchString" 
args1(0).Value = ":" 

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1()) 

ビューの変更、それは選択を示しているが、それは任意の特定の場所ではありません。私はそれがウィンドウ/ビューの最上部にあることを望みます。

また、ThisComponent.currentController.getViewData()restoreViewData()の使用があります。そこで私は、垂直方向のスクロールを取得するために返されるデータを変更する方法を実験し決定しましたが、何も起こりません。たとえば...

vd = ThisComponent.currentController.getViewData() 
vdParts = Split(vd, ";") 
vdParts(6) = CLng(vdParts(6)) + 1000 
vd = join(vdParts, ";") 
ThisComponent.currentController.restoreViewData(vd) 

お勧めはありますか?

PS:私は、Windows 7のx64上のバージョン5.0.5.2を実行しています

答えて

1

スプレッドシートを操作することができるView Panesを持っていますが、Writerの同様のインタフェースがあるようにそれは見えません。

代わりに、View Cursorを使用して1ページまたは2ページ下に移動し、検索結果の場所に戻ります。

また、ディスパッチャを検索に使用しないでください。 Andrew Pitonyak's macro documentのセクション7.14のように、代わりにAPIを使用します。

+0

Thx Jim。私はビューカーソルを試してみましたが、私の実験では、ビューカーソルはビューを変更して選択を表示しませんでした。私はその後、ディスパッチャの例を思い出し、それを試してみることにしました。私はうれしく驚いていました。 – Vic

+0

前のコメントを投稿し、ジムが他の人たちによって作成したあなたの提案を見て、エディタからマクロを実行すると、ビューが更新されていないことに気付きました。キーボードショートカットを割り当てて、ビューを変更するためにマクロを実行しなければなりませんでした。デザインの欠陥ですか? – Vic

+0

私は通常、エディタからマクロを実行しません。これは、エディタを現在のコンポーネントにします(これは便利ですが、この場合は必要ではありません)。代わりに、私は通常、キーボードショートカットを使用して 'Tools - > Macros - > Run Macro'に行きます。エディタから実行するには、ThisComponentを使用する代わりに、[desktop.getComponents()](https://www.openoffice.org/api/docs/common/ref)で始まるテキストドキュメントのコンポーネントを使用します。 /com/sun/star/frame/XDesktop.html#getComponents)。 –

関連する問題