Top > OOobbs2 > 155
** [[OOobbs2/155]] [#s678b909]
-''サマリ'': ドキュメント間のシートの挿入(Java)
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[初級Javaかき2]]
-''投稿日'': 2008-11-10 (月) 13:38:30
*** 質問 [#u919d997]
複数のドキュメントから1シートずつ取り出し、
1つのドキュメントに挿入するプログラムを
作ろうとしています。

ドキュメント間コピー([[OOobbs2/152]])を応用して作っていたのですが、
挿入先のドキュメント内にあるシートを上書きしてしまい
うまくいきません。

ドキュメント間のシート挿入は別の方法なのでしょうか?
*** 回答 [#o9f8555c]
- [[OOobbs2/152]]には二通りの方法が書いてありますが、どちらで行っているのか分かりません。シートリンクでは指定したシートに対してリンクを設定するので、同じシートにリンクを指定しない限り上書きされることはありません。また、dispatch で選択、コピー、貼り付けを行う場合には貼り付け先はいつもアクティブシートになります。アクティブシートを切り替えてから貼り付ける必要があります。 -- はにゃ? &new{2008-11-10 (月) 16:30:03};
- シートリンクのほうで行っています。別シートを指定し、設定しているのですが、最後にリンクしたシートのみが保存された状態になってしまいます。 -- 初級Javaかき2 &new{2008-11-10 (月) 16:43:53};
- 以下のようなマクロで試してみましたが問題ありませんでした。シートを挿入していないんじゃないでしょうか・・・?

 Sub sheet_link_1a
  oNewDoc = StarDesktop.loadComponentFromURL( _
     "private:factory/scalc", "_blank", 0, Array() )
  
  oSheets = oNewDoc.getSheets()
  
  
  sDocs = Array("1", "2")
  
  For i = 0 To UBound(sDocs) step 1
  sDocName = sDocs(i)
  For j = 1 To 3 step 1
  oSheets.insertNewByName(sDocName & CStr(j), 0)
  oSheet = oSheets.getByIndex(0)
  oSheet.link( _
      "file:///E:/usr/" & sDocName & ".ods", _
      "Sheet" & CStr(j), _
      "", _
      "", _
      com.sun.star.sheet.SheetLinkMode.NORMAL )
  
  oSheet.setLinkMode( _
    com.sun.star.sheet.SheetLinkMode.NONE )
  Next
  Next
  oNewDoc.storeAsURL("file:///E:/usr/out.ods", Array())
 End Sub

-- はにゃ? &new{2008-11-10 (月) 17:06:54};
- シートは挿入しているのですが・・・。マクロではなくJavaで書いているからでしょうか? -- 初級Javaかき2 &new{2008-11-10 (月) 18:05:27};
- ソースを見ていないので理由は分かりませんが、Java は関係ないと思います。 -- はにゃ? &new{2008-11-10 (月) 18:29:56};

#comment


*** 感想,コメント,メモ [#d46426dd]
- 原因がわからないのですが、シートリンクの処理がうまく動かないようです。(OOobbs2/152)の処理もまともに動かなくなってしまいました。dispatchで処理すると上手く動きました。シートリンクの異常の原因を探す時間が無いので、これで解決とさせていただきます。 -- 初級Javaかき2 &new{2008-11-11 (火) 15:19:20};

#comment

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