...
Expand |
---|
title | Развернуть текст макроса |
---|
|
Code Block |
---|
language | vb |
---|
firstline | 1 |
---|
title | Макрос |
---|
| ###DECLARE###
Public Type GroupLevel
ColIndex As Integer 'номер колонки, в которой указано название группы
InterColor As Long 'цвет ячейки
IsBold As Integer '1 - жирный 0 - нет
IsItalic As Integer '1 - курсив 0 - нет
FontName As String 'название шрифта
FontColor As Long 'цвет шрифта
FontSize As Long 'размер шрифта
Indent As Integer 'отступ
IsUnderline As Integer 'подчеркнут
End Type
###DECLARE###
'Укажите после "To" количество уровней группировки,
'3 (три) означет что у группы есть подгруппы и у подгруппы есть еще вложенные подгруппы
Const lvlCount = 3
Dim i, j, clmnPriceIndex, clmnOutIndex, rowFirstData As Integer
'Укажите номер колонки, в которой указана цена товара
clmnPriceIndex = 60
'Укажите номер колонки, в которую будет помещен результат
clmnOutIndex = 200
'Укажите номер первой строки с данными
rowFirstData = 100
Dim GroupLevels(1 To lvlCount) As GroupLevel
'Укажите настройки для каждого уровня, пример:
GroupLevels(1).ColIndex = 1
2
GroupLevels(1).InterColor = 011842740
GroupLevels(1).IsBold = 01
GroupLevels(1).IsItalic = 0
1
GroupLevels(1).IsUnderline = -4142
GroupLevels(1).FontName = "Arial"
GroupLevels(1).FontColor = 0
GroupLevels(1).FontSize = 1
9
GroupLevels(1).Indent = 0
'GroupLevels(2).ColIndex = 12
'GroupLevels(2).InterColor = 0
12829635
'GroupLevels(2).IsBold = 0
'1
GroupLevels(2).IsItalic = 0
'1
GroupLevels(2).IsUnderline = -4142
GroupLevels(2).FontName = "Arial"
'GroupLevels(2).FontColor = 0
GroupLevels(2).FontSize = 9
'GroupLevels(2).Indent = 0
For i = rowFirstData To ActiveSheet.UsedRange.Rows.Count
If ActiveSheet.Cells(i, clmnPriceIndex).Value = "" Then
For j = 1 To lvlCount
Set cel = ActiveSheet.Cells(i, GroupLevels(j).ColIndex)
If (cel.Interior.Color = GroupLevels(j).InterColor) And _
((-1) * CInt(cel.Font.Bold) = GroupLevels(j).IsBold) And _
((-1) * CInt(cel.Font.Italic) = GroupLevels(j).IsItalic) And _
(cel.Font.Name = GroupLevels(j).FontName) And _
(cel.Font.Color = GroupLevels(j).FontColor) And _
(cel.Font.Size = GroupLevels(j).FontSize) And _
(cel.IndentLevel = GroupLevels(j).Indent) Then
ActiveSheet.Cells(i, clmnOutIndex).Value = j
Exit For
End If
Next j
End If
Next i
|
|
Вам так же понадобится этот файл, для определения форматирования в ячейках, скачайте его себе:
...
Количество уровней групп, которые собираетесь загружать из прайса
Image RemovedImage Added
Номер колонки в которой цена товара
...
Дальше нужно для каждого уровня группировки указать блок, описывающий форматирование этого уровня в прайсе. То, что указано для примера ниже, можно удалить.
Image RemovedImage Added
Блоки эти нужно брать из файла "Проверка формата ячейки"
...
в результате получим код, который нужно скопировать в макрос для прайса:
Копируем код вместо того, который был в макросе:
Image Added
Аналогично делаем для второго и третьего уровней.
Image Added
Image Added
Для каждого уровня указываем номер колонки, в которой указано название группы этого уровня (в примере это колонка B, указывается номер 2)
Image Added
Вот здесь должен быть указан уровень, разный в каждом блоке
Image Added
Полученный результат копируется в настройку прайса
Image Added
3. В настройке прайса указываются колонки "Название группы" и "Название выш. гр." - в моем примере одна и та же колонка B, в которой находятся группы в прайсе.
Указываем так же поле "Код вышестоящей группы" - это та колонка, в которую в макросе указали помещать номер уровня группы (20-ая колонка)
Image Added
Устанавливаем птичку "Загружать дерево категорий"
Image Added
Загружать группу по наименованию + птичка Группа в отдельной строке
Image Added
Сохраняем настройки и пробуем загрузить. В моем примере получились такие настройки:
Image Added