Top > OOobbs2 > 52

OOobbs2/52 Edit

  • サマリ: ドキュメント間でセル範囲のコピー
  • 環境: Calc
  • 状態: 解決
  • 投稿者: とうし?
  • 投稿日: 2007-07-26 (木) 14:00:59

質問 Edit

ひとつのドキュメントでセル範囲をコピーするのは、

oSheet.copyRange( aCellAddress, aCellRangeAddress )

で、できるのですが、違うドキュメント間でセル範囲をコピーする 方法が分かりません。 どなたか教えてください。

回答 Edit

  • dispatch で行います。DispatchHelper はフレームオブジェクトを必要とするので、コピー元ドキュメントとコピー先ドキュメントのフレームを取得します。

コピー先ドキュメントのフレームの取得はいろいろあると思いますが、下の例では StarDesktop のフレームコンテナからタイトルを調べて取得しています。

Sub Main
Dim oDoc As Object, oSourceFrame As Object
  oDoc = ThisComponent
  oController = oDoc.CurrentController
  oSourceFrame = oController.Frame
  Dispatch(".uno:Copy",oSourceFrame)
  oFrames = StarDesktop.getFrames()
  For i = 0 To oFrames.getCount()-1
    oDestFrame = oFrames.getByIndex(i)
    If InStr(oDestFrame.Title,"無題2") Then
      Dispatch(".uno:Paste",oDestFrame)
      Exit For
    End If
  Next i
End Sub
 
sub Dispatch( sCommand As String, oLocFrame As Object)
  dim dispatcher as object
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  dispatcher.executeDispatch(oLocFrame, sCommand, "", 0, Array())
end sub

これでほかに問題になるのは、選択範囲がコピーされ、コピー先はカーソル位置が左上になることです。

コピー元とコピー先で特定のセルを選択する必要があります。セル範囲またはセルの選択は CurrentController オブジェクトの select メソッドにオブジェクトを渡すことでできます。OOoBasic/Calc/selection

フレームオブジェクトからドキュメントオブジェクトを取得するには

oDestDoc = oDestFrame.Controller.Model
  • はにゃ?? 2007-07-26 (木) 14:58:33

感想,コメント,メモ Edit



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