2009年8月25日火曜日

Excelにてオートシェイプの文字列を操作する

Excelのオートシェイプの文字列置換検索が出来ないのが非常に不便だったので、
Delphiで操作するのを試してみました。

OLEを操作する場合には、VBAなどが普通なんでしょうけど、Delphiの方が得意なんで
Delphiでやってみます。

OleObjectを使っています。

下記のような感じでやれば操作できました。

宣言
var E_Excel: Variant;
E_Application: Variant;
E_WorkBook: Variant;
E_WorkSheet: Variant;
E_Shape: Variant;

基本的な操作方法
E_Excel := CreateOleObject('Excel.Application');
E_Application := E_Excel.Application;
E_Excel.Visible:=True;
E_Application.WorkBooks.Open(FileName); // XLS ファイルを開く
E_WorkBook := E_Application.ActiveWorkbook;
E_WorkSheet := E_Application.ActiveSheet;
for i:=1 to E_WorkSheet.Shapes.Count do
begin
E_Shape:=E_WorkSheet.Shapes.item(i);
   E_Shape.TextFrame.Characters.Text;
E_Shape.TextFrame.Characters.Text:= 'test';
  end

いちばん苦労したのは、変更したオートシェイプを画面上にスクロール表示させる部分。
これに悩んだのですが、下記のページをいろいろと細かく見ていくと

Shape インターフェイス (Microsoft.Office.Interop.Excel)

BottomRightCell というプロパティがあったんで、

E_Shape.bottomRightCell.Select;

という感じで書いてあげると意図通りに動作してくれた。

ここら辺を使って、エクセルのオートシェイプの文字を検索するツールを作ってみました。
http://mitools.blogspot.com/2009/08/excel.html

0 件のコメント: