OOobbs/40
質問
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 回答
下にエラーを修正したコードを示します。まずは,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 一応,私の環境ではうまく動作しました。よく分からないところがあればまた質問してもらえればと思います。
|