* 最初の一セルだけ指示し、ある範囲のセルデータを一度に書き込みたい [#tb5f1c9a]
 |RIGHT:|LEFT:|c
 |~ページ|[[OpenOffice.org FAQの登録ページ]]|
 |~投稿者|Mr_Happy|
 |~分類|#listbox3(Q&A,faq03,class)|
 |~優先順位|#listbox3(重要,faq03,priority)|
 |~状態|#listbox3(完了,faq03,state)|
 |~カテゴリー|#listbox3(Calc 表計算,faq03,category)|
 |~投稿日|2011-03-25 17:06:19 (金)|
 |~OS|Win7|
 |~依存するページ||
 |~依存するページ|•faq/6/184 |
 |~バージョン|#listbox3(3.3.0,faq03,version)|
 
 ** メッセージ [#o5d4befa]
 |LEFT:|c
 |回答ページでは行末に「~」を付加する必要はありません|
 お世話になります。お陰様で少しわかってきました。
 
 今回の質問:
 
 下記はあるファイルの2頁のセル E6:F8 のデータを
 現在使用している0頁のセル G7:H9 に書き込むプログラムで、正常に動作しています。
 
 これを受ける側で G7 のみ指示して書き込む方法はありませんか?
 
  Sub Y_DocYomiKaki_Main()
     Dim oMyCmp As Object, oYuCmp As Object, oYuDoc As Object, oYuDat As Object
     
     oMyCmp = ThisComponent
     '既に開いている特定ブックの有無
     If Y_GetYuCmp(oYuCmp,"絵本.xlsx") = FALSE Then Exit Sub
  
     oYuDat = oYuCmp.Sheets(2).getCellRangeByName("E6:F8").getDataArray
     oMyCmp.Sheets(0).getCellRangeByName("G7:H9").setDataArray(oYuDat)
  End Sub
 
 ----
 ***インデックスで位置を指定してセル範囲を取得 [#z0b876ce]
 >はにゃ? (2011-03-25 23:27:01 (金))~
 ~
 次のような感じで、指定したセルアドレスを基点としてデータソースのセル範囲と同じサイズのセル範囲オブジェクトを取得して利用します。~
  Sub SetDataTest
   oDoc = ThisComponent
   oRange1 = oDoc.getSheets().getByIndex(0).getCellRangeByName("A1:C2")
   oDoc2 = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array())
   oSheet = oDoc2.getSheets().getByIndex(0)
   
   SetDataToPosition(oRange1, oSheet, "B2")
  End Sub
  
  
  Sub SetDataToPosition(oRange1, oSheet, sDest)
   aRangeAddr = oRange1.getRangeAddress()
   oCell = oSheet.getCellRangeByName(sDest)
   aCellAddr = oCell.getCellAddress()
   oRange2 = oSheet.getCellRangeByPosition(_
     aCellAddr.Column, _
     aCellAddr.Row, _
     aCellAddr.Column + aRangeAddr.EndColumn - aRangeAddr.StartColumn, _
     aCellAddr.Row + aRangeAddr.EndRow - aRangeAddr.StartRow)
   oRange2.setDataArray(oRange1.getDataArray())
  End Sub
 
 //
 ***ありがとうございます。完了です [#ya9d450f]
 >Mr_Happy (2011-03-27 16:18:57 (日))~
 ~
 はにゃ? さん ありがとうございます。~
 結局は自分で作るということなのですね。~
 
 //
 #article