Цитата:
Сообщение от
AndyD
Почему такой путь - для передачи типов данных в столбцах функция требует передачи в кач-ве одного из параметров массива массивов.
К сожалению, не знаю как это организовать в Axapta без привлечения сторонних средств
AndyD, есть мысль - использовать формулу массива, во всяком случае в Excel у меня получилось...
Итак, как я понимаю, проблема заключается в том, что в операторе VBA вида
PHP код:
...
Workbooks.OpenText Filename:="C:\demo.txt", Origin:=1251, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter _
:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _
Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 2), Array(3, 2), Array(4, 2), _
Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), _
TrailingMinusNumbers:=True
...
присутствует неудобный для нас фрагмент:
PHP код:
...
FieldInfo:=Array(Array(1, 1), Array(2, 2), Array(3, 2), Array(4, 2), _
Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)),
...
По жизни это не что иное, как двумерный массив "Номер поля - Тип поля" (в данном контексте задачи):
Код:
Номер Тип
---------
1 1
2 2
3 2
4 2
5 1
6 1
7 1
8 1
9 1
10 1
Так вот, если перед вызовом Workbooks.OpenText... выполнить оператор VBA:
PHP код:
...
Worksheets("Sheet1").Range("A1:B10").FormulaArray = "={1,1;2,2;3,2;4,2;5,1;6,1;7,1;8,1;9,1;10,1}"
...
(запятые разделяют элементы в строке, точка с запятой - строки),
то потом можно заменить FieldInfo:=Array... на FieldInfo:=Worksheets("Sheet1").Range("A1:B10") и получится:
PHP код:
...
Workbooks.OpenText Filename:="C:\demo.txt", Origin:=1251, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter _
:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _
Other:=False, FieldInfo:=Worksheets("Sheet1").Range("A1:B10"), _
TrailingMinusNumbers:=True
...
Соответственно, от функции VBA.Array избавляемся и получается, что всё можно сделать из Аксы, не вызывая код VBA.
Попробуете? Только прошу, ни в коем случае не убирайте предыдущую версию. Пусть она останется в ветке. А новую можно назвать типа "ExportExcelTXT_2"