Is it possible to detect color of sheet tab with actxserver?

조회 수: 6 (최근 30일)
Ghenji
Ghenji 2018년 2월 8일
댓글: Ghenji 2018년 2월 9일
I have got excel data files and would like to read data only from the spreadsheets having Green color. So in total i would be having data from only Green labelled spreadsheets from all the excel files.

채택된 답변

Guillaume
Guillaume 2018년 2월 9일
편집: Guillaume 2018년 2월 9일
I'd use Tab.Color instead of Tab.ColorIndex otherwise you'd also have to query the actual palette used by excel.
Completely untested code written on the fly, there may be typos / mistakes. Use MSDN to check the syntax of excel methods.
filepath = 'C:\somewhere\somefile.xlsx';
excel = actxserver('Excel.Application');
workbook = excel.Workbooks.Open(filepath);
numsheet = worbook.Worksheets.Count;
namergb = cell(numsheet, 2);
for sheetidx = 1:numsheet
sheet = workbook.Worksheets.Item(sheetidx)
namergb{sheetidx, 1} = sheet.Name;
bgr = sheet.Tab.Color;
namergb{sheetidx, 2} = uint8([mod(bgr, 256), floor(mod(bgr/256, 256)), floor(bgr/65536)]);
end
workbook.Close;
excel.Quit;
cell2table(namergb, 'VariableNames', {'SheetName', 'RGB'})
  댓글 수: 3
Guillaume
Guillaume 2018년 2월 9일
You don't have to use a table. This is just for pretty display. You can use the cell array or any other container you wish, (or none at all if you do the comparison in the loop).
Saying that it's trivial to search the table (or cell array, or ...):
t = cell2table(namergb, 'VariableNames', {'SheetName', 'RGB'})
wantedsheet = t.SheetName(all(t.RGB == uint8([0 255 1]), 2))
Ghenji
Ghenji 2018년 2월 9일
Got it. Works perfectly.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2018년 2월 8일
It does appear to be possible. https://analysistabs.com/excel-vba/change-color-sheet-tabs/ You would test each sheet in turn, accessing the sheets().Tab.ColorIndex property, and looking for value 4
  댓글 수: 1
Ghenji
Ghenji 2018년 2월 9일
I have got bit idea about actxserver but how do i pass above code?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Spreadsheets에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by