Anyway to run excell commands from matlab? Like draw a boarder range?

19 vues (au cours des 30 derniers jours)
Steven
Steven le 27 Sep 2019
Modifié(e) : Lucie S. le 23 Avr 2020
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
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.

Réponses (1)

Steven Lord
Steven Lord le 27 Sep 2019
How did you create DataSheetObj and what is its size? Does it have one element or five?
  5 commentaires
Steven Lord
Steven Lord le 30 Sep 2019
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.
Lucie S. le 23 Avr 2020
Modifié(e) : Lucie S. le 23 Avr 2020
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)

Connectez-vous pour commenter.

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by