既存Excelにワー​クスペース変数を貼り​付けるためにはどのよ​うなscriptを組​めばよいでしょうか?

2 views (last 30 days)
YUKI FUJITA
YUKI FUJITA on 28 Oct 2021
Commented: YUKI FUJITA on 1 Nov 2021
既存のExcelシートの指定したシートへMATLABのワークスペースに保存された変数を貼り付けるためのscriptを考えていますが、
変数貼り付けの部分がまだ作れていません。ご教授頂きたいです。
XL_file = [pwd '\test.xlsm'];
[type, sheet_names] = xlsfinfo(XL_file);
% Excel を COM オートメーションサーバとしてオープン
Excel = actxserver('Excel.Application');
set(Excel, 'Visible', 1);
% エクセルのアラートを非表示に設定
set(Excel,'DisplayAlerts',0);
% エクセルのワークブックのハンドルを取得
Workbooks = Excel.Workbooks;
% エクセルワークブックを開き、アクティベート
Workbook = Workbooks.Open(XL_file);
% 貼り付けるsheetを指定してアクティブに
Sheets = Excel.ActiveWorkBook.Sheets;
Sheet1 = get(Sheets,'Item',3);
Sheet1.Activate;
% MATLABワークスペース変数を貼り付ける ・・・未作成
% ワークブックを保存
Workbook.Save;
% ワークブックをクローズ
Workbooks.Close;
% エクセルを終了
invoke(Excel, 'Quit');
% ActiveX オブジェクトのハンドルを消去
delete(Excel);
  4 Comments
YUKI FUJITA
YUKI FUJITA on 1 Nov 2021
Atsushi Ueno さん
ご丁寧にご教授頂き、ありがとうございます。COMサーバを使って複雑な事をやるよりもreadmatrix,writematrixを使用する方が良いとのことですね。

Sign in to comment.

Accepted Answer

Hernia Baby
Hernia Baby on 28 Oct 2021
Sampleで指定したシート、指定した場所に数字を貼り付けています。
これを動かす条件は「対象のエクセルを閉じておく」ことです。
clear,clc;
X = readmatrix('Sample.xlsx','Sheet',1,'Range','B2:B16')
上のX部分を書き換えます。他のセルには干渉しません。
x = randi(15,15,1);
writematrix(x,'Sample.xlsx','Sheet',1,'Range','B2:B16');
X = readmatrix('Sample.xlsx','Sheet',1,'Range','B2:B16')
  2 Comments
YUKI FUJITA
YUKI FUJITA on 1 Nov 2021
Heria Babyさん
ありがとうございます。Atushi Uenoさんからコメント頂いておりますが、readmatrix, writematrixを使用してトライしてみます。ご丁寧にありがとうございました。本当に助かります。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!