OOobbs/100
質問
CALCのスプレッドシート上にOLEオブジェクト(Writer)を張付けてその中身である文章(テキスト)をooBASICで操作したいのですが、その方法が解りません。 教えていただけないでしょうか? 具体的には、
を行いたいです。 回答
OLE オブジェクトもドローページにまとめられて他のシェープと同じようになっています。そのシェープの Model プロパティーにアクセスすることで埋め込まれたドキュメントのドキュメントオブジェクトが取得できました。 下のコードでは,Calc にメニューの挿入から OOo のテキストを OLE オブジェクトとして挿入し,文字を入力したものから文字列を取得して Calc ドキュメント上のセルに書き込みます。 Sub Main Dim oDoc As Object Dim oDrawPage As Object Dim oEmbObj As Object Dim oEmbDoc As Object Dim oText As Object Dim sString As String oDoc = ThisComponent oDrawPage = oDoc.getDrawPages().getByIndex(0) If oDrawpage.hasElements() Then oEmbObj = oDrawPage.getByIndex(0) 'MsgBox oEmbObj.Name If oEmbObj.ShapeType = "com.sun.star.drawing.OLE2Shape" Then 'InputBox "","",LCase(oEmbObj.CLSID) If LCase(oEmbObj.CLSID) = "8bc6b165-b1b2-4edd-aa47-dae2ee689dd6" Then oEmbDoc = oEmbObj.Model oText = oEmbDoc.getText() sString = oText.getString() oDoc.getSheets().getByIndex(0).getCellByPosition(0,0).String = sString End If End If End If End Sub OLE オブジェクトに名前を付けておけば取得するシェープオブジェクトの判断が楽です。 OOo 2.0.3,OOo 1.1.5 では動作しました。
|