Is it possible to detect color of sheet tab with actxserver?
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Ghenji
 el 8 de Feb. de 2018
  
    
    
    
    
    Comentada: Ghenji
 el 9 de Feb. de 2018
            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.
0 comentarios
Respuesta aceptada
  Guillaume
      
      
 el 9 de Feb. de 2018
        
      Editada: Guillaume
      
      
 el 9 de Feb. de 2018
  
      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 comentarios
  Guillaume
      
      
 el 9 de Feb. de 2018
				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))
Más respuestas (1)
  Walter Roberson
      
      
 el 8 de Feb. de 2018
        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
Ver también
Categorías
				Más información sobre Spreadsheets en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

