Top > OOobbs > 40

OOobbs/40 Edit

  • サマリ: マクロでWriterからCalcへコピペ
  • 環境: Calc
  • 状態: 解決
  • 投稿者: fufu?
  • 投稿日: 2004-11-05 (金) 11:45:09

質問 Edit

Writerにて開いたWord文書を「ctrl+A」で選択し「ctrl+C」でコピー、calcで新規作成した所に「ctrl+V」で貼り付けます。 取り合えず、上記手順をマクロを記録でwriter分とcalc分で作り、それを足してみたのですが、上手くいきません。

簡単なことなのかもしれませんが、色々いじっても出来ないので、教えていただけたらと思います。 よろしくお願いいたします。

sub Main
	Dim oDocWriter As Object
	Dim oDocCalc As Object
	Dim oDispatcher As Object

	oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	oDocWriter = ThisComponent.CurrentController.Frame

	oDispatcher.executeDispatch(oDocWriter, ".uno:SelectAll", "", 0, Array())
	oDispatcher.executeDispatch(oDocWriter, ".uno:Copy", "", 0, Array())

	oDocCalc = StarDesktop.loadComponentFromURL(  "private:factory/scalc", "_blank", 0, mArg() )

	Dim _args1(0) as new com.sun.star.beans.PropertyValue
	_args1(0).Name = "ToPoint"
	_args1(0).Value = "$A$1"

	oDispatcher.executeDispatch(oDocCalc, ".uno:GoToCell", "", 0, _args1())
	oDispatcher.executeDispatch(oDocCalc, ".uno:Paste", "", 0, Array())

end sub

回答 Edit

  • いくつかエラーがありました。 -- はにゃ?? 2004-11-05 (金) 21:21:58

下にエラーを修正したコードを示します。まずは,12 行目の StarDesktop.loadComponentFromURL の行の mArg() 変数が定義されていないためのエラー。これは 5 行目に Dim mArg() ... の行で定義しておきました。

その次は,同じ 12 行目の oDocCalc 変数がドキュメントオブジェクトであるためのエラー。このマクロ中で使用されている executeDispatch メソッドはフレーム (Frame) オブジェクトに対して使用する必要があります。 oDocWriter のところで取得されているような方法で取得できるオブジェクトです。そこで,oDocCalc もフレームオブジェクトを取得するように変更しました。

sub Main
	Dim oDocWriter As Object
	Dim oDocCalc As Object
	Dim oDispatcher As Object
	Dim mArg() As Variant ' <-

	oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	oDocWriter = ThisComponent.CurrentController.Frame

	oDispatcher.executeDispatch(oDocWriter, ".uno:SelectAll", "", 0, Array())
	oDispatcher.executeDispatch(oDocWriter, ".uno:Copy", "", 0, Array())

	oDocCalc = StarDesktop.loadComponentFromURL(  "private:factory/scalc", "_blank", 0, mArg() ).getCurrentController().getFrame()

	Dim _args1(0) as new com.sun.star.beans.PropertyValue
	_args1(0).Name = "ToPoint"
	_args1(0).Value = "$A$1"

	oDispatcher.executeDispatch(oDocCalc, ".uno:GoToCell", "", 0, _args1())
	oDispatcher.executeDispatch(oDocCalc, ".uno:Paste", "", 0, Array())

end sub

一応,私の環境ではうまく動作しました。よく分からないところがあればまた質問してもらえればと思います。

  • 上手く出来ました。ありがとうございます。 -- fufu? 2004-11-08 (月) 10:14:35


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