ActiveX を使って Excelの任意のセ​ルに画像を挿入するこ​とはできますか?

23 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 13 Mar 2018
Excel 上に画像を貼りつける処理を ActiveX の機能を使って、MATLAB から操作したいのですが、AddPicture メソッドを使うと、ポイントで位置を指定しなければなりません。
スプレッドシートのセル(例えば、K2)を指定して、貼りつける方法を教えてください。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 19 Jun 2023
Edited: MathWorks Support Team on 20 Jun 2023
以下の 2 つの方法があります。
1. Range プロパティからセルの位置を取得し、AddPicture で張り付ける方法
2. Pictures オブジェクトの Insert メソッドを使用する方法
下記に例を示します。
file_name=[pwd,'\Book1.xlsx']; % Excel ファイルパス
im_name = [pwd, '\pic1.jpg']; % 画像ファイルパス
% Excel COM Server のハンドル取得と Workbook の追加
Excel = actxserver('Excel.Application');
set(Excel, 'Visible', 1);
Workbooks = Excel.Workbooks;
Workbook = invoke(Workbooks,'Open',file_name);
% Sheet のハンドルを取得し、Sheet を選択
Activesheet = Excel.Activesheet;
Sheets = Excel.ActiveWorkBook.Sheets;
Sheet1 = get(Sheets, 'Item', 1);
Sheet1.Activate;
% 画像の貼りつけ
% -- 方法 1 : BEGIN --
Shapes = Sheet1.Shapes;
Top = Sheet1.Range('K2', 'K2').Top; % セル K2 の高さの位置
Left = Sheet1.Range('K2', 'K2').Left; % セル K2 の左端の位置
Y=Shapes.AddPicture(im_name ,0,1,Left,Top,300,300); % 画像貼り付け% -- 方法 1 : END --
% -- 方法 2 : BEGIN --
Sheet1.Range('A2', 'A2').Select % セル A2 を選択する
Sheet1.invoke('Pictures').Insert(im_name) % 画像の挿入
% -- 方法 2 : END --
なお、方法 2 の場合、図がリンク オブジェクトとして挿入されるようです。

More Answers (0)

Products


Release

R2012a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!