Top > OOobbs > 68

OOobbs/68 Edit

  • サマリ: ドキュメントをまたいでのページのコピー
  • 環境: Calc
  • 状態: 解決
  • 投稿者: tote2?
  • 投稿日: 2005-05-24 (火) 16:30:53

質問 Edit

あるドキュメントから別のドキュメントへシートをコピーしようとして困っています。 こちらのサイトで insertByName の説明に "別のドキュメントからシートを持ってきたシートを挿入する際などに使用します。" という記述を見つけ、

Dim oNewComponent As Object
Dim oSrcSheet As Object
Dim Args()
oNewComponent = StarDesktop.loadComponentFromURL ( "private:factory/scalc" , "_blank", 0 , Args() )
oSrcSheet = ThisComponent.Sheets(0)
oNewComponent.Sheets.insertByName( "new sheet", oSrcSheet )

としてみましたが、insertByNameでIllegalArgument例外が発生してエラーとなります。 (まぁ他ドキュメントのシートそのものを挿入しようとしたのでエラーとなるのは当たり前で、 コピーしたインスタンスを指定する必要があるんじゃないかと思っているのですが そのインスタンスを生成する方法が分かりません。) 別のドキュメントにシートをコピーする方法を御教示頂けないでしょうか。 よろしくお願いします。

回答 Edit

  • API 関数ではできないようです。なので,dispatch を使う必要があります。

コピー元のドキュメントで

  1. コピーしたいシートを選択
  2. コピー

コピー先のドキュメントに

  1. 新規シートを作成
  2. シートに貼り付け の手順です。

実際のコードは後ほど。

  • はにゃ?? 2005-05-25 (水) 12:39:10
  • えっと,
Sub Main
Dim aArg()
Dim Dispatcher As Object
Dim oSrcDoc As Object, oNewDoc As Object
'Dim oNewSheet As Object
Dim oSrcFrame As Object, oNewFrame As Object

  oSrcDoc = ThisComponent
  oSrcFrame = oSrcDoc.getCurrentController().getFrame()
  oNewDoc = StarDesktop.loadComponentFromUrl("private:factory/scalc","_blank",0,Array())
  oNewFrame = oNewDoc.getCurrentController().getFrame()
  'oNewSheet = oNewDoc.createInstance("com.sun.star.sheet.Spreadsheet")
  oNewDoc.getSheets().insertNewByName("new sheet",0)
  Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  Dispatcher.executeDispatch(oSrcFrame,".uno:SelectAll","", 0,aArg())
  Dispatcher.executeDispatch(oSrcFrame,".uno:Copy","", 0,aArg())
  oNewDoc.getCurrentController().ActiveSheet = oNewDoc.getSheets().getByIndex(0)
  Dispatcher.executeDispatch(oNewFrame,".uno:Paste","", 0,aArg())
End Sub
  • はにゃ?? 2005-05-25 (水) 22:43:38
  • はにゃ? さん、早速の御回答ありがとうございます。dispatch …スロット ID の項でしたか。それっぽい所ばっかり勉強しててそこまで到達していませんでした。大変助かりました。どうもありがとうございました。 -- tote2? 2005-05-26 (木) 09:07:00


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes