10.08.2005, 16:34 | #1 |
NavAx
|
День добрый.
Что-то я туплю. Выкидываю отчет в Эксель. Пытаюсь создать на листе итоги (которые в Экселе делаются через Данные - Итоги). Смотрю на это дело - в методе Range.Subtotal полагается указывать следующие параметры: <div class='CALtop'>C/AL</div><div class='CAL'> Long GroupBy; XLCONSOLIDATIONFUNCTION Function; Variant TotalList; Variant Replace; Variant PageBreaks; XLSUMMARYROW SummaryBelowData; </div> Теперь смотрю в записанный макрос (суммирую два столбца - 3-й и 4-й) <div class='CALtop'>C/AL</div><div class='CAL'> Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4), _Replace:=True, PageBreaks:=False, SummaryBelowData:=True </div> Дык вот как передать в C/AL ентот самый TotalList? Что нужно указать в Range.SubTotal вместо "Array(3, 4)"? Прошу прощения, если вопрос тупой, я в VBA совсем не шарю, к сожалению.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
10.08.2005, 17:01 | #2 |
Moderator
|
C/AL не поддерживает конвертацию из переменной типа вариант в тип SAFEARRAY. Как вариант решения могу предложить считать сабтоталы непосредственно в С/AL, либо динамически создать макрос VBA и вызвать его
|
|
10.08.2005, 17:13 | #3 |
NavAx
|
Печально.
А можно подробнее насчет динамического создания макроса и его вызова? Непосредственно в C/AL уже посчитал, но так неинтересно :stupid:
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
19.01.2006, 17:55 | #4 |
Участник
|
Да, уважаемый Tirex, было бы очень интересно услышать Ваше решение данной проблемы
__________________
"Трудное надо сделать привычным, привычное легким, а легкое приятным" (Станиславский) |
|
19.01.2006, 18:26 | #5 |
Moderator
|
пж
файл c:\test.bas: Public Sub SayHello() MsgBox "Hello world" End Sub понятно что такой файл можно создать "на лету" Код: CREATE(ExcelApp); ExcelApp.Visible := TRUE; ExcelWorkBook := ExcelApp.Workbooks.Add; ExcelWorkSheet := ExcelWorkBook.Sheets.Item(1); ExcelApp.VBE.ActiveVBProject.VBComponents.Import('c:\test.bas'); ExcelApp.Run('SayHello'); CLEAR(ExcelApp); |
|
22.01.2006, 22:13 | #6 |
Участник
|
2Tyrex
Thanx Метод хорош, но не универсален, сам понимаешь.. Второй вариант - Цитата:
Как вариант решения могу предложить считать сабтоталы непосредственно в С/AL,
__________________
"Трудное надо сделать привычным, привычное легким, а легкое приятным" (Станиславский) |
|
23.01.2006, 12:42 | #7 |
NavAx
|
Это значит не использовать эксельные итоги, а все заранее посчитать в Навыжне и вывести в Эксель готовые числа.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|