将简单的VB脚本转换为MATLAB

时间:2015-04-19 21:24:47

标签: excel matlab excel-vba vba

我在将简单的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;

任何解决方法?感谢

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

你应该可以从那里得到它。