MATLABのActiveXサーバーを使用して、Excelシートの多くのセルを一度に強調表示しようとしています。これらは特定の列や行にありませんので、私はRange('A1,B2,...')
を使ってアクセスします。ただし、Rangeオブジェクトで受け入れられる文字列は255文字未満である必要があります。エラー:255文字より長い文字列のため、Excel Rangeオブジェクトでエラー0x800A03ECがスローされる
Error: Object returned error code: 0x800A03EC
がスローされます。次のコードは、このエラーを空のExcelファイルで再現します。
hActX = actxserver('Excel.Application');
hWB = hActX.Workbooks.Open('C:\Book1.xlsx');
hSheet = hWB.Worksheets.Item('Sheet1');
col = repmat('A', 100, 1);
row = num2str((1:100)'); %'
cellInd = strcat(col, strtrim(cellstr(row)));
str1 = strjoin(cellInd(1:66), ','); %// 254 characters
str2 = strjoin(cellInd(1:67), ','); %// 258 characters
hSheet.Range(str1).Interior.Color = 255; %// Works
hSheet.Range(str2).Interior.Color = 255; %// Error 0x800A03EC
hWB.Save;
hWB.Close(false);
hActX.Quit;
どのように私はこの問題を回避することができますか? Rangeを呼び出す他の関連するメソッドが見つからないか、そうでなければ変更したいセルを取得しています。
Excelのスプレッドシートで書式設定マクロを呼び出すことは可能でしょうか? –
あなたの質問で構文の強調表示を修正しましたが、そこにルージュのアポストロフィがあるようです。 –
Excelのアプリケーションの「Union」メソッドを使用して複数の範囲を結合する必要があります。 – Rory