Anyway to run excell commands from matlab? Like draw a boarder range?
    조회 수: 3 (최근 30일)
  
       이전 댓글 표시
    
I know how excel com commands can be called from matlab with activex com.
How could I draw a border with com?
Sub SetRangeBorder() 
 With Worksheets("Sheet1").Range("B2").Borders(xlEdgeBottom) 
 .LineStyle = xlContinuous 
 .Weight = xlThin 
 .ColorIndex = 3 
 End With 
End Sub
Source: Microsoft Excel Borders
Excel = actxserver('excel.application');
WB = Excel.Workbooks.Open(xlsfile,0,false);
DataSheetObj.Range('B2:B4').Borders.Item('xlEdgeLeft').LineStyle = 1;
DataSheetObj.Range('B2:B4').Borders.Item('xlEdgeLeft').Weight = -4138;
% Save Workbook
WB.Save();
% Close Workbook
WB.Close();
% Quit Excel
Excel.Quit();
I have tried the above code, it throws an error:
Expected one output from a curly brace or dot indexing expression, but there were 5 results.
댓글 수: 0
답변 (1개)
  Steven Lord
    
      
 2019년 9월 27일
        How did you create DataSheetObj and what is its size? Does it have one element or five?
댓글 수: 5
  Steven Lord
    
      
 2019년 9월 30일
				Try using the code from the answer to which I linked in the sentence starting with "Doing a quick Google search" as a starting point. You will need DataWkbkObj to be defined if you want to use it to control the borders of a region.
  Lucie S.
 2020년 4월 23일
				
      편집: Lucie S.
 2020년 4월 23일
  
			Indeed, this works all together
AppObj = actxserver('Excel.Application');
AppObj.Visible = true;
WkbkObj = AppObj.Workbooks;
DataWkbkObj = WkbkObj.Add;
DataWkbkObj.Sheets.Add().Name = 'Test';
DataSheetObj = DataWkbkObj.Sheets.Item('Test');
DataSheetObj.Range('B2:B4').Borders.Item('xlEdgeLeft').LineStyle = 1;
DataSheetObj.Range('B2:B4').Borders.Item('xlEdgeLeft').Weight = -4138;
% Other examples of modifying borders, I struggle to find:
DataSheetObj.Range('B2:B4').Borders.Item('xlEdgeBottom').Weight = -4138; % quite thick border weight
DataSheetObj.Range('B2:B8').Borders.Item('xlEdgeTop').Weight =2; % default border weight
% To do borders on many cells:
DataSheetObj.Range('B2:E8').Borders.Item('xlInsideVertical').LineStyle = 1;        % All inside vertical borders
DataSheetObj.Range('B2:E8').Borders.Item('xlInsideHorizontal').LineStyle = 1;     % All inside Horizontal borders
DataSheetObj.Range('B2:E8').Borders.Item('xlInsideVertical').Color =hex2dec('00FF00');     % change color using hexa coded RGB color 
DataSheetObj.Range('B2:E8').Borders.Item('xlInsideVertical').ColorIndex =15;  % change color using Excel Color Index (here grey) (google to find more colors)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Use COM Objects in MATLAB에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


