最初の一セルだけ指示し、ある範囲のセルデータを一度に書き込みたい †
ページ | OpenOffice.org FAQの登録ページ |
---|---|
投稿者 | Mr_Happy |
分類 | |
優先順位 | |
状態 | |
カテゴリー | |
投稿日 | 2011-03-25 17:06:19 (金) |
OS | Win7 |
依存するページ | •faq/6/184 |
バージョン |
メッセージ †
回答ページでは行末に「~」を付加する必要はありません |
お世話になります。お陰様で少しわかってきました。
今回の質問:
下記はあるファイルの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
インデックスで位置を指定してセル範囲を取得 †
はにゃ? (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
ありがとうございます。完了です †
Mr_Happy (2011-03-27 16:18:57 (日))
はにゃ? さん ありがとうございます。
結局は自分で作るということなのですね。