1 (изменено: Cyberstream, 2013-03-05 16:52:28)

Тема: JScript: Excel VBA, не работает TextToColumns

Здравствуйте
Help!

var oExcel = new ActiveXObject("Excel.Application");
oExcel.Visible = true;
oExcel.Workbooks.Add();
var xl = oExcel.ActiveWorkbook.ActiveSheet;
xl.Range("A1").Formula = "1;2;3;4;5;7;10;12;15;17;18;19;20;21;23;24;27;28;30;31;33;34;35;36;37;38;43;46;48;49;50;51;52;53";
xl.Range("A1").TextToColumns(Destination = xl.Range("A4"),
    ConsecutiveDelimiter=true, Semicolon=true);

Excel молча копирует строку из А1 в A4, без разбиения по столбцам.
Что ему не хватает, в отличии от записанного макрорекордером:

+ открыть спойлер

Selection.TextToColumns Destination:=Range("A4"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
33, 1), Array(34, 1)), TrailingMinusNumbers:=True

если (по MSDN) все параметры метода необязательны?

Post's attachments

trez_gr_c_demo.js 1.72 kb, 2 downloads since 2013-03-05 

You don't have the permssions to download the attachments of this post.

2

Re: JScript: Excel VBA, не работает TextToColumns

Это совершенно разные вещи

VBScript/VBA

Selection.TextToColumns Destination:=Range("A4"), 

Destination в данном случае - именованный аргумент метода TextToColumns.

JScript

xl.Range("A1").TextToColumns(Destination = xl.Range("A4"), ...

Destination в данном случае простая переменная, которой присваивается значение метода. Фактически, этот код выполняет тоже самое что и следующий (в общем случае, переменной присваивается некоторое значение и оно передается первым аргументом методу. Аналогично следующие):


Destination = xl.Range("A4")
xl.Range("A1").TextToColumns(Destination, ...

Чтобы все заработало также как и в VBA, надо каждый аргумент метода, передаваемый по умолчанию, установить в значение по умолчанию (false, null, 0, "" или что-то другое - смотрите описание метода TextToColumns в документации).

( 2 * b ) || ! ( 2 * b )

3

Re: JScript: Excel VBA, не работает TextToColumns

Ясно, спасибо! Заработало.