[解決] Dispatch コマンド : ドキュメントウィンドウの選択

スプレッドシート (Calc) について
返信する
K.Tsunoda
記事: 71
登録日時: 11月 2, 2008, 6:44 pm
連絡する:

[解決] Dispatch コマンド : ドキュメントウィンドウの選択

投稿記事 by K.Tsunoda »

Workbooks("Book1.xls").Activate に相当する処理を行ないたいと思うのですが、
指定ドキュメントのフレームオブジェクトを取って、Dispatch コマンドで [ ドキュメントウィンドウの選択(切換) ]
をすれば出来るのではと考えました。

指定ドキュメントの名前による取得は下記( GetComponent )を作って出来るようになりました。
http://blog.livedoor.jp/addinbox/archives/51192547.html

下記Dispatch コマンドの一覧から [ ドキュメントウィンドウの選択(切換) ]を探しましたがありません。
http://hermione.s41.xrea.com/pukiwiki/p ... ands_2.3.0
マクロの記録でも残らないということは、[ ドキュメントウィンドウの選択(切換) ]は無いのでしょうか?

コード: 全て選択

sub Main
Dim Dispatcher as object
Dim oComponent As Object
Dim oFrame As Object
Dim args() as new com.sun.star.beans.PropertyValue

  Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  oComponent = GetComponent("Document1.ods")
  oFrame   = oComponent.CurrentController.Frame

  Dispatcher.executeDispatch(oFrame, ".uno:????????", "", 0, args())
end sub
もしくは、指定ドキュメントの Component/Frame が取れているので、他の方法で可能でしょうか?
最後に編集したユーザー K.Tsunoda [ 7月 18, 2009, 11:55 am ], 累計 1 回
tani
記事: 60
登録日時: 6月 13, 2008, 10:12 am

Re: Dispatch コマンド : ドキュメントウィンドウの選択

投稿記事 by tani »

コード: 全て選択

Sub Main
  oFrame = ThisComponent.getCurrentController().getFrame()
  oFrame.getContainerWindow().toFront()
End Sub
こんな感じでどうでしょうか。もしやりたいことと違ってたらごめんなさい。
K.Tsunoda
記事: 71
登録日時: 11月 2, 2008, 6:44 pm
連絡する:

Re: Dispatch コマンド : ドキュメントウィンドウの選択

投稿記事 by K.Tsunoda »

taniさん、ありがとうございます。完璧です♪
これで、どのドキュメントでも Active にできます♪

コード: 全て選択

Sub Main
Dim oComponent As Object
Dim oFrame As Object

  oComponent = GetComponent("Document1.ods")    'GetComponent : ユーザー関数
  ' oComponent = GetComponent("無題 2")
  oFrame   = oComponent.CurrentController.Frame
  oFrame.getContainerWindow().toFront()
End Sub
RefEdit ではThisComponent でセルアドレス文字からセルオブジェクトを作っているので
RefEditを使う時に、ドキュメント切り替えを行なったらマズイかなぁというのも思ってましたが、
切り替えたらダイアログ/RefEdit ともにドキュメントと一緒に背後に隠れてしまいますね。
一安心とともに、ちょい残念な気も・・・・
K.Tsunoda
記事: 71
登録日時: 11月 2, 2008, 6:44 pm
連絡する:

Re: [解決] Dispatch コマンド : ドキュメントウィンドウの選択

投稿記事 by K.Tsunoda »

GetComponent 関数に Activate 機能を組み込みました。

oComponent = GetComponent("Document1.ods", True)

これで、指定ドキュメントをActiveにして、そのコンポーネントオブジェクトを返します。

[ GetComponent ]
http://blog.livedoor.jp/addinbox/archives/51192547.html
返信する

“Calc”に戻る