Имя: Пароль:
1C
1С v8
Сортировка в Excel из 1С
0 Victor111
 
02.04.15
17:08
Есть макрос нужно адаптировать под 1с, сразу отсекается запуск готового макроса средствами 1С, так как макрос будет создаваться програмно  в 1С.
Например : FileFormat:=xlExcel8 в 1с будет выглядеть Fileformat = -4143 ;
Не пойму как выразить :
SortOn:=xlSortOnValues
Order:=xlAscending
DataOption:=xlSortNormal
1 Victor111
 
02.04.15
17:09
Сам макрос
Sub Для1С()
'
' Для1С Макрос
'

'
    Rows("2:4").Select
    Range("AO2").Activate
    Selection.AutoFilter
    Application.AddCustomList ListArray:=Array("52", "62")
    ActiveWorkbook.Worksheets("Входящий файл").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Входящий файл").AutoFilter.Sort.SortFields.Add Key _
        :=Range("B5:B115"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        CustomOrder:="52,62", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Входящий файл").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
2 b_ru
 
02.04.15
17:14
открыть макрос в экселе, поставить точку останова, запустить, в отладчике глянуть значения всех интересующих констант.
3 ДенисЧ
 
02.04.15
17:16
Const xlSortOnValues = 0
Const xlAscending = 1
4 ДенисЧ
 
02.04.15
17:16
Const xlSortNormal = 0
5 Victor111
 
02.04.15
18:14
а как правильно вот этот кусок кода записать:
With ActiveWorkbook.Worksheets("Входящий Файл").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

я пробую вот так:
Header = 1;
MatchCase = Ложь;
Orientation = 1;
SortMethod = 1;
Apply = 1;

        
Excel.ActiveWorkbook.Worksheets("Входящий Файл").AutoFilter.Sort(Header,MatchCase,Orientation,SortMethod,Apply);

ошипка
{ОбщийМодуль.Сервер.Модуль(1293)}: Ошибка при вызове метода контекста (Sort)
        Excel.ActiveWorkbook.Worksheets("Входящий Файл").AutoFilter.Sort(Header,MatchCase,Orientation,SortMethod,Apply);
по причине:
Метод не найден
6 MiniMuk
 
02.04.15
19:44
With ActiveWorkbook.Worksheets("Входящий Файл").AutoFilter.Sort
это вроде блок внутри которого он является действующим, как то так
тоесть должно быть тото вроде

Excel.ActiveWorkbook.Worksheets("Входящий Файл").AutoFilter.Sort.Header= 1;
Excel.ActiveWorkbook.Worksheets("Входящий Файл").AutoFilter.Sort.MatchCase = Ложь;
...
7 Victor111
 
02.04.15
21:48
(6) Все отлично заработало, спасибо!