Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Установка автофильтра в листе excel при выгрузке данных из Аксесс / 7 сообщений из 7, страница 1 из 1
06.08.2014, 16:22
    #38714330
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка автофильтра в листе excel при выгрузке данных из Аксесс
Здравствуйте. Делаю выгрузку данных из формы аксесса в excel. Вот код выгрузки:

Код: 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.
26.
Dim PrintRep As Object
Dim ExportData As DAO.Recordset
Dim LastRow As Integer
Set PrintRep = CreateObject("Excel.Application")
 Set WB = PrintRep.Workbooks.Add
 Set WS = WB.Worksheets(1)
 Set ExportData = Me.FactOfJobsForPeriod.Form.Recordset
 WS.Range("A1:H1").Merge
  WS.Rows(1).Font.Bold = True
  WS.Rows(1).Font.Size = 12
  WS.Rows(7).Font.Bold = True
 ExportData.MoveFirst
WS.Range("D8").CopyFromRecordset ExportData
LastRow = WS.usedRange.Row + WS.usedRange.Rows.Count - 1
WS.usedRange.Columns.autofit
WS.cells(LastRow + 2, 2).Formula = "=SUBTOTAL(109,O8:O" & LastRow & ")"
WS.cells(LastRow + 3, 2).Formula = "=SUBTOTAL(109,R8:R" & LastRow & ")"
WS.cells(LastRow + 4, 2).Formula = "=SUBTOTAL(109,T8:T" & LastRow & ")"
WS.cells(LastRow + 5, 2).Formula = "=SUBTOTAL(109,U8:U" & LastRow & ")"
WS.cells(LastRow + 6, 2).Formula = "=SUBTOTAL(109,V8:V" & LastRow & ")"
WS.cells(LastRow + 7, 2).Formula = "=SUBTOTAL(109,W8:W" & LastRow & ")"
WS.cells(LastRow + 8, 2).Formula = "=SUBTOTAL(109,X8:X" & LastRow & ")"
WS.cells(LastRow + 9, 2).Formula = "=SUBTOTAL(109,Y8:Y" & LastRow & ")"
WS.Range("D8:AA" & LastRow).Select
WS.Selection.AutoFilter
PrintRep.Visible = True 


кодом
Код: vbnet
1.
 LastRow = WS.usedRange.Row + WS.usedRange.Rows.Count - 1 


определяю номер последней строки выгруженного диапазона.
Проблема возникла в коде :
Код: vbnet
1.
2.
WS.Range("D8:AA" & LastRow).Select
WS.Selection.AutoFilter 


Здесь я попытался поставить автофильтр. На строку

Код: vbnet
1.
WS.Selection.AutoFilter 



ругается: Object Doesn't support this property or method . Что не так?
Код: vbnet
1.
 WS.Range("D8:AA" & LastRow).Select 


работает - лист выходит с выделенным диапазоном.
Пробовал в Excel записывать макрос по установке фильтра. Он написал 2 строчки:
Код: vbnet
1.
2.
Range("D8:AA100").Select
Selection.Autofilter 


я попробовал сделать по этому образцу - не работает...
писал
Код: vbnet
1.
WS.Selection.AutoFilter 



и
Код: vbnet
1.
Selection.AutoFilter


никакой из вариантов не проходит...
...
Рейтинг: 0 / 0
06.08.2014, 16:28
    #38714339
vTin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка автофильтра в листе excel при выгрузке данных из Аксесс
Объект диапазон (range или selected) не имеет метода или свойства AutoFilter. Это в общем-то логично, т.к. при Autofilter задействуется вся страница. Наверное, есть метод на уровне Application или около того. Советую включить автозапись макроса, выбрать диапазон и включить автофильтр, после чего выключить автозапись макроса и посмотреть что получилось
...
Рейтинг: 0 / 0
06.08.2014, 16:42
    #38714374
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка автофильтра в листе excel при выгрузке данных из Аксесс
запись я включал. макрос состоял из 2-х строк - выделение диапазона и автофильтр к выделенному...
...
Рейтинг: 0 / 0
06.08.2014, 16:45
    #38714380
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка автофильтра в листе excel при выгрузке данных из Аксесс
Код: vbnet
1.
2.
Range("D8:AA100").Select
Selection.Autofilter 


вот что написал макрос во время записи. Что делал я во время этой записи:
1)выделил диапазон
2)выполнил команду: Данные->Автофильтр - нажал на кнопку с воронкой в ленте
...
Рейтинг: 0 / 0
06.08.2014, 16:57
    #38714403
vTin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка автофильтра в листе excel при выгрузке данных из Аксесс
Хм, может быть из-за того, что у вас Filter с большой буквы? Autofilter и AutoFilter?
...
Рейтинг: 0 / 0
06.08.2014, 19:26
    #38714512
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка автофильтра в листе excel при выгрузке данных из Аксесс
vTinFilter с большой буквы? Autofilter и AutoFilter?VB не чувствителен к регистру. Поэтому здесь ошибки точно нет.
А вот тот факт, что лист WS(Worksheets(1)) явно не активируется - вполне может повлиять на результат.
Проще сразу так же, как и все до этого:
Код: vbnet
1.
WS.Range("D8:AA" & LastRow).AutoFilter


Еще неплохо бы проверить, защищен ли лист.
И кстати, лучше LastRow объявлять как Long(т.к. последняя строка может быть больше, чем 32768)
Код: vbnet
1.
Dim LastRow As Long
...
Рейтинг: 0 / 0
07.08.2014, 08:10
    #38714663
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка автофильтра в листе excel при выгрузке данных из Аксесс
спасибо, все работает
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Установка автофильтра в листе excel при выгрузке данных из Аксесс / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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