powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
13 сообщений из 13, страница 1 из 1
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36271593
Axids
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
У меня происходит выгрузка данных из Oracle, хочу чтобы все колонки и строки обводились рамкой
вот что имею
1.для чистки предыдущих данных, при следующей выгрузке

автор Sheets("1").Select
Range("A42:AA10000").Select
Application.CutCopyMode = False
Selection.ClearContents

2. выгрузка из оракла

автор Worksheets("1").Activate
adata = "select 1,2,3,4 from table1"
rst.Open adata, "provider=msdaora.1;Data source=" + CStr(sDataSource) + ";User Id=" + CStr(sUserName) + ";Password=" + CStr(sUserPassword), adOpenStatic, adLockPessimistic
Cells(42, 1).CopyFromRecordset rst
rst.Close

ЧТо нужно добавить в чистку чтобы рамки при следующей очистки тоже удалялись
и что добавить чтобы во всех заполненных строках начиная с указанной рисовались рамки для все ячеек?
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36271730
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЧТо нужно добавить в чистку чтобы рамки при следующей очистки тоже удалялись
имхо заменить
Selection.ClearContents
на
Selection.Clear
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36271775
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что добавить чтобы во всех заполненных строках начиная с указанной рисовались рамки для все ячеек?
Например так можно:
Код: plaintext
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.
26.
27.
28.
Sub tt()

Set targetall = Sheets( 1 ).UsedRange

For Each target In targetall.Cells
    With target.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With target.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With target.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With target.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
Next

End Sub
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36271799
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прости, поправочка:
Код: plaintext
1.
2.
Set targetall = Range(Cells( 42 ,  1 ), Cells(Cells.SpecialCells(xlCellTypeLastCell).Row,  10 ))

Вместо 10 поставь количество выгружаемых столбцов.
Наверное, можно их количество автоматически определить, если нужно.
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36272038
Axids
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никак нельзя при очистки чтобы только рамки и значения удалялись, а то размеры шрифта тоже сбрасываются
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36272055
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы только рамки и значения удалялись
попробуй после своего Selection.ClearContents добавь код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36272074
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то размеры шрифта тоже сбрасываются - вообще-то их тоже можно задать в коде:
Код: plaintext
1.
2.
For Each target In targetall.Cells
         target.Font.Size =  12 
ну смотри, как удобнее, хозяин барин...
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36273897
Axids
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121 что добавить чтобы во всех заполненных строках начиная с указанной рисовались рамки для все ячеек?
Например так можно:
Код: plaintext
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.
26.
27.
28.
Sub tt()

Set targetall = Sheets( 1 ).UsedRange

For Each target In targetall.Cells
    With target.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With target.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With target.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With target.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
Next

End Sub



Тут проблема возникла что он мне рисует рамки во всех строка которые нужны и далее те куда данные не выгружались, можно как то ограничить чтобы закончилось на последней выгруженной строке?
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36273988
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чуть ниже я поправку сделал:
Код: plaintext
1.
Set targetall = Range(Cells( 42 ,  1 ), Cells(Cells.SpecialCells(xlCellTypeLastCell).Row,  10 ))
Будет выделена область с А42 по последнюю заполненную ячейку 10 столбца.
А строка
Код: plaintext
1.
Set targetall = Sheets( 1 ).UsedRange
означает весь использованный диапазон листа 1, даже тот, где данные раньше были, но теперь удалены простым delete содержимого ячеек. Если удалять целиком строки (выделить всю строку и удалить её полностью, со сдвигом нижних строк вверх), то тогда UsedRange будет только действительно использованная область.
Но если после заполняемых данных есть что-то ещё, что в рамку обводить не нужно, то UsedRange не годится, надо конкретно определять область через Range.
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36274081
Axids
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас для примера использую следющий код
автор Worksheets("1").Activate
adata = "select rownum, SUBSCHET, NOMEN_NAME, NOMEN_CODE, ED_IZM, PRICE, MODIFIKACIYA, FAKT_KOLV, FAKT_SUMMA, PRICHINA_NEISP, DO_GODA, POSLE_GODA, PROCENT_GODNOSTI from SRNV_RLINVSHEETSPEC_VEDOM"
rst.Open adata, "provider=msdaora.1;Data source=" + CStr(sDataSource) + ";User Id=" + CStr(sUserName) + ";Password=" + CStr(sUserPassword), adOpenStatic, adLockPessimistic
Cells(42, 1).CopyFromRecordset rst
rst.Close

Set targetall = Range(Cells(42, 1), Cells(Cells.SpecialCells(xlCellTypeLastCell).Row, 14))

For Each target In targetall.Cells
With target.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Next

Но строки всеравно продолжают обводиться дальше заполненных, такое ощущение что Cells(Cells.SpecialCells(xlCellTypeLastCell).Row не определяет последнию заполненную
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36274125
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотри, точно там ниже нет данных?
Ещё можно как-то определить количество импортируемых строк (не знаю, хоть
Код: plaintext
1.
2.
3.
4.
Do Until rst.EOF
    count = count +  1 
    rst.MoveNext
Loop
, и прописать их в код явно, например
Код: plaintext
1.
Set targetall = Range(Cells( 42 ,  1 ), Cells(count,  14 ))
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36274132
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sorry,
Код: plaintext
1.
Set targetall = Range(Cells( 42 ,  1 ), Cells( 42  + count,  14 ))
...
Рейтинг: 0 / 0
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
    #36274384
Axids
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно видно данные были сейчас все нормально спасибо большое за помощь.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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