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

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

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 19 Giu 2023
Modificato: MathWorks Support Team il 20 Giu 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 の場合、図がリンク オブジェクトとして挿入されるようです。

Più risposte (0)

Prodotti


Release

R2012a

Community Treasure Hunt

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

Start Hunting!