Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как автоматически выресовывать рамку в Excel при выгрузке из Oracle? / 13 сообщений из 13, страница 1 из 1
26.10.2009, 05:00
    #36271593
Axids
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Привет всем!
У меня происходит выгрузка данных из 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
26.10.2009, 09:20
    #36271730
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
ЧТо нужно добавить в чистку чтобы рамки при следующей очистки тоже удалялись
имхо заменить
Selection.ClearContents
на
Selection.Clear
...
Рейтинг: 0 / 0
26.10.2009, 09:41
    #36271775
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
что добавить чтобы во всех заполненных строках начиная с указанной рисовались рамки для все ячеек?
Например так можно:
Код: 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
26.10.2009, 09:56
    #36271799
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Прости, поправочка:
Код: plaintext
1.
2.
Set targetall = Range(Cells( 42 ,  1 ), Cells(Cells.SpecialCells(xlCellTypeLastCell).Row,  10 ))

Вместо 10 поставь количество выгружаемых столбцов.
Наверное, можно их количество автоматически определить, если нужно.
...
Рейтинг: 0 / 0
26.10.2009, 11:57
    #36272038
Axids
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
А никак нельзя при очистки чтобы только рамки и значения удалялись, а то размеры шрифта тоже сбрасываются
...
Рейтинг: 0 / 0
26.10.2009, 12:03
    #36272055
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
чтобы только рамки и значения удалялись
попробуй после своего 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
26.10.2009, 12:09
    #36272074
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
то размеры шрифта тоже сбрасываются - вообще-то их тоже можно задать в коде:
Код: plaintext
1.
2.
For Each target In targetall.Cells
         target.Font.Size =  12 
ну смотри, как удобнее, хозяин барин...
...
Рейтинг: 0 / 0
27.10.2009, 08:38
    #36273897
Axids
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
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
27.10.2009, 09:24
    #36273988
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Чуть ниже я поправку сделал:
Код: 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
27.10.2009, 10:04
    #36274081
Axids
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Сейчас для примера использую следющий код
автор 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
27.10.2009, 10:21
    #36274125
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Посмотри, точно там ниже нет данных?
Ещё можно как-то определить количество импортируемых строк (не знаю, хоть
Код: 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
27.10.2009, 10:23
    #36274132
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Sorry,
Код: plaintext
1.
Set targetall = Range(Cells( 42 ,  1 ), Cells( 42  + count,  14 ))
...
Рейтинг: 0 / 0
27.10.2009, 11:47
    #36274384
Axids
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как автоматически выресовывать рамку в Excel при выгрузке из Oracle?
Точно видно данные были сейчас все нормально спасибо большое за помощь.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как автоматически выресовывать рамку в Excel при выгрузке из Oracle? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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