2017-05-04 18 views
0

まずは過去に他のトピックで見つけた非常に良い回答に感謝します。MatLab:Excel COMアドインを使用してセルを動的に反復する

新たな挑戦へ今

:私は、今

excelapp = actxserver('Excel.Application'); %connect to excel 
workbook = excelapp.Workbooks.Open('Solutions.xls');   
worksheet = workbook.Sheets.Item(1);       
ColorValue_Solutions=worksheet.Range('N2').Interior.Color; 

:私は現在、アドインをMatlabの中で、つまり私はExcelワークブックを読み取り、色のプロパティを抽出していますCOMで働いています

Range A1のJ222までのセルでこれを行いたいと思っています。これは、Rangeプロパティをdynmaicallyにループして、各セルを個別に読み込んでから色を取り出すことです。たとえば、次のように

Columns = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}; 

for j = 1:length(Columns)   
    for i = 1:222 

worksheet.(char(strcat('Range(''',Columns(j), num2str(i), ''')'))).Interior.Color 

    end 
end 

これは、しかし、エラーが発生:

Undefined function or variable 'Range('A1')'. 

私は推測する問題が含まれた文字列と文字列の解釈の組み合わせである、すなわちレンジ(「A1」) 。

ご迷惑をおかけして申し訳ありません。

答えて

0

少し前に私は同様の質問をしました。 Check it out、多分あなたはそれが役に立つと思うでしょう。

次のコードは、あなたが欲しいものを行う必要があります。

あなたはInterior.Colorプロパティが最初にそのCellInteriorオブジェクトにアクセスする、その後、Cellオブジェクトを取得し、最終的にColorプロパティを取得することにより、すべての細胞から抽出される方法を確認することができますそのInteriorオブジェクトのColorプロパティはMicrosoftが定義した色の整数です(詳細はherehereです)、その値を行列(M)に保存します。指定された範囲のセルでこのプロセスを繰り返すために、私はすでに行っていたようにネストループを使用します。プロセスが終了すると、Mの内容が表示されます。

excelapp = actxserver('Excel.Application'); % Start Excel as ActiveX server. 
workbook = excelapp.Workbooks.Open('Solutions.xls'); % Open Excel workbook. 
worksheet = workbook.Sheets.Item(1);   % Get the sheet object (sheet #1). 

ncols = 10;    % From column A to J. 
nrows = 222;   % From row 1 to 222. 
M(nrows, ncols) = 0; % Preallocate matrix M. 

for col = 1:ncols        % Loop through every column. 
    for row = 1:nrows       % Loop through every row. 
     cell = get(worksheet, 'Cells', row, col); % Get the cell object. 
     interior = cell.Interior;    % Get the interior object. 
     colorint = get(interior, 'Color');  % Get the color integer property. 
     M(row, col) = colorint;    % Store color integer in matrix M. 
    end 
end 

disp(M); % Display matrix M with the color integer information. 

終了したら接続を閉じてください。あなたはそれを行う方法を学ぶことができますherehere

+0

ありがとうございました!それは完全に機能します。 –

関連する問題