我在将简单的VB脚本(格式化)转换为MATLAB时遇到了一些问题:
VB脚本:
Range("A1").Select
Selection.Font.Italic = True
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
End With
我试过了:
xlswrite('test.xls',1,'A1');
Excel = actxserver('Excel.Application');
Excel.Workbooks.Open('test.xls');
Range = Excel.Range('A1');
Range.Font.Italic = True; % Doesnt work
Range.Border.Item('xlEdgeRight').LineStyle = 1; % Doesnt work
Excel.Visible = 1;
任何解决方法?感谢
答案 0 :(得分:1)
问题可能就在这一行:
Range = Excel.Range('A1');
您的Excel对象是一个Application对象,它没有Range属性。您遵循的VBA示例使用(IMHO)使用全局默认对象的不良做法,这些对象仅在应用程序本身的上下文中可用。您需要获取此调用返回的工作簿的引用:
Excel.Workbooks.Open('test.xls');
之后,您需要从其索引的Worksheets属性中获取工作表,然后从中获取Range。此外,“xlEdgeRight”是枚举成员,因此外部调用必须使用它们的整数值而不是字符串。您可以将xlEdgeRight替换为10.
我对Matlab几乎一无所知,但这就是VBA中更明确的代码:
Dim book As Workbook, sheet As Worksheet, rng As Range
Set book = Application.Workbooks.Open("test.xls")
Set sheet = book.Worksheets("Sheet1")
Set rng = sheet.Range("A1")
rng.Font.Italic = True
rng.Borders.Item(10).LineStyle = 1
你应该可以从那里得到它。