掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
delphiからOpenOffice Calcに画像を貼りつけたい (ID:42941)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
1、やりたいこと delphiで作成した画像ファイルをOpenOffice Calcに貼ってpdf形式にして保存したい 2、処理の順序 A: Delphiで画像を作成する(下記コードでは 無題.jpg という名前になってます) B: OpenOffice CalcをDelphiから起動する C: Calcに無題.jpgを貼りつける D: Calcからpdf形式で保存する 以上の処理のうちCのみうまくできません。 エラーも出ずに処理するのですが、Calcの画面になんの変化もなく 無題.jpgは貼り付けられません。 また、エラーもでないため問題の切り分けすらできていない状況です。 (そのため質問にコードを貼らせていただきます。ごめんなさい ><) 画像は作成できていることから、Aには問題ないので、B,Cのコードを 以下に記載します。 間違っている点があったら指摘していただけると助かります。 また、以下のような方法ではなく、Calcに画像を貼りつける方法があったら 教えていただきたいです。 (複数枚の画像データをずらしながら自動的に貼っていく必要があるので、 位置を指定できる貼りつけ方法だとうれしいです) Delphi7 OpenOffice.org 3.4 Windows7 グローバル変数 //OpenOfficeグローバル変数 vOpenOffice : Variant; //サービスマネージャ vobjFrame:Variant; vDispacher:Variant; vStarDesktop: Variant; //サービス vDocument : Variant; //ドキュメント vSheet : Variant; //シート //================================================================ // B: Calc起動(こちらは正常に動作しています。読み飛ばしても結構です) //================================================================ //空のプロパティ配列を返却するメソッド function TForm1.dummyArray: Variant; begin Result:= VarArrayCreate([0, -1], varVariant); end; //起動 procedure TForm1.Button5Click(Sender: TObject); begin //サービスマネージャ生成 vOpenOffice := CreateOleObject('com.sun.star.ServiceManager'); //サービス生成 vStarDesktop := vOpenOffice.createInstance('com.sun.star.frame.Desktop'); //新規でCalcを起動 vDocument := vStarDesktop.loadComponentFromURL('private:factory/scalc' , '_blank' , 0 , dummyArray); //アクティブなSheetを設定(1番目のSheet) vSheet := vDocument.Sheets.getByIndex(0); //Sheet名変更 vSheet.Name := 'Sheet1'; vDocument.getCurrentController.Select('A1'); //vSheet.getCellRangeByName('A1'); end; //================================================================ // C: 画像の挿入(こちらが問題のコード) //================================================================ procedure TForm1.Button6Click(Sender: TObject); var vaProperties : variant; //保存パラメータ用<配列> vProperty,vProperty2,vProperty3,vProperty4 : variant; //保存オプション用<配列値> sFileName : String; //保存ファイル名編集用 begin vobjFrame := vDocument.getCurrentController.getFrame; vDispacher := vOpenOffice.createInstance('com.sun.star.frame.DispatchHelper'); //パラメータ用プロパティ配列生成 vaProperties := VarArrayCreate([0, 3], varVariant); //プロパティ用オプション生成 vProperty:= vOpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); vProperty2:= vOpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); vProperty3:= vOpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); vProperty4:= vOpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); //プロパティ用オプション値設定 vProperty.Name := 'FileName'; vProperty.Value := 'file:///C:/無題.jpg'; //プロパティ用オプション値設定 vProperty2.Name := 'FilterName'; vProperty2.Value := '<すべての書式>'; //プロパティ用オプション値設定 vProperty3.Name := 'AsLink'; vProperty3.Value := false; //プロパティ用オプション値設定 vProperty4.Name := 'Style'; vProperty4.Value := '図'; //オプション内容をプロパティ配列に設定 vaProperties[0] := vProperty; vaProperties[1] := vProperty2; vaProperties[2] := vProperty3; vaProperties[3] := vProperty4; vDispacher.executeDispatch(vobjFrame, '.uno:InsertGraphic' , '_blank' , 0 , vaProperties); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.