powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / макет листа excel
2 сообщений из 2, страница 1 из 1
макет листа excel
    #37690272
l-evgene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Стоит задача: Переписать характеристики листа эксель (размеры строк, столбцов, координаты объединенных ячеек, содержимое ячеек и т.д.), с тем, чтобы в последующем воспроизвести этот лист программмно. Все получается, кроме границ ячеек.
Для снятия границ использую прогу:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
strРабочийЛист = ActiveSheet.Name                                               'Запоминаем текущий лист с
Set РабочийЛист = Sheets(strРабочийЛист)                                        'обрабатываемой формой.
Set SheetРамки = Sheets.Add                                                     'Лист для внесения данных о рамках
РабочийЛист.Activate                                                            'Возвращаемся на рабочий лист
SheetРамки.Name = "Рамки"
    With SheetРамки
        .Cells(1, 1).Value = "Строка"
        .Cells(1, 2).Value = "Столбец"
        .Cells(1, 3).Value = "СтильСлева"
        .Cells(1, 4).Value = "ТолщинаСлева"
        .Cells(1, 5).Value = "СтильСнизу"
        .Cells(1, 6).Value = "ТолщинаСнизу"
    End With
longСтрокаРасшифровки = 2                                                       'Начиная со второй строки пишем
    For Each Ячейка In РабочийЛист.Range(Cells(1, 1), Cells(longНизЛиста, longПравоЛиста)) 'параметры каждой ячейки
        longСтрока = Ячейка.Row
        longСтолбец = Ячейка.Column
        SheetРамки.Cells(longСтрокаРасшифровки, 1).Value = longСтрока
        SheetРамки.Cells(longСтрокаРасшифровки, 2).Value = longСтолбец
        SheetРамки.Cells(longСтрокаРасшифровки, 3).Value = Ячейка.Borders(xlEdgeLeft).LineStyle
        SheetРамки.Cells(longСтрокаРасшифровки, 4).Value = Ячейка.Borders(xlEdgeLeft).Weight
        SheetРамки.Cells(longСтрокаРасшифровки, 5).Value = Ячейка.Borders(xlEdgeBottom).LineStyle
        SheetРамки.Cells(longСтрокаРасшифровки, 6).Value = Ячейка.Borders(xlEdgeBottom).Weight
        longСтрокаРасшифровки = longСтрокаРасшифровки + 1
    Next Ячейка



При отсутствии рамки LineStyle=-4142. При попытке воспроизвести границы на чистом листе при LineStyle=-4142 выдается ошибка: "нельзя установить свойство LineStyle класса Border(1004)"
Попытался обойти проблему (скрипт ниже). В этом случае границы ставятся где попало по всему листу
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Set РабочийЛист = Sheets("проверка рамок")
Set SheetРамки = Sheets("Рамки")
РабочийЛист.Activate                                                            'Возвращаемся на рабочий лист
    For i = 2 To 1500
        With РабочийЛист.Cells(SheetРамки.Cells(i, 1), SheetРамки.Cells(i, 2))
            If SheetРамки.Cells(i, 3) <> -4142 Then
                .Borders(xlEdgeLeft).LineStyle = SheetРамки.Cells(i, 3)
            End If
        End With
    Next i


Может быть существует более грамотное решение задачи?
...
Рейтинг: 0 / 0
макет листа excel
    #37690294
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно. Настроить файл и сохранить как шаблон. При его открытии будет создаваться копия. Или настроить отдельный лист, а копию делать с помощью ctrl+a - ctrl+c - ctrl-v.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / макет листа excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]