2015-04-19 5 views
0

У меня есть некоторые проблемы преобразования Simples VB скриптов (форматированием) в MATLAB:конвертировать простой 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

Проблема, вероятно, эта линия:

Range = Excel.Range('A1'); 

Ваш объект Excel является объектом Application, который не имеет свойство Range. В приведенном ниже примере VBA используется (IMHO) плохая практика использования глобальных объектов по умолчанию, которые доступны только в контексте самого приложения. Вы должны получить ссылку на Workbook возвращенного этого вызова:

Excel.Workbooks.Open('test.xls'); 

После этого, вы должны получить лист из него индексируется Worksheets свойства, затем получить диапазон от этого. Кроме того, «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 

Вы должны быть в состоянии получить его оттуда.

Смежные вопросы