1

Тема: AHK: Excel_FilterDatabase

Добрый вечер! Прошу помощь в проблеме, которую никак не могу решить. С файлом работают в течении дня вручную и иногда сохраняют с фильтром, создать макрос на очистку фильтра перед выходом - .xlsx в .xlsm не вариант.
Имею код

path = ....    .xlsx
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path)
Xl.Visible := true

If (xl.Worksheets(1).FilterMode)
	xl.Worksheets(1).ShowAllData

; Gui для выбора периода

Gui 1:Default

Gui, +LastFound +AlwaysOnTop +Caption +ToolWindow  
Gui, Font, +s12

Gui, Add, Text, x10 y20 w120 h20, First Date:
Gui, Add, DateTime, x120 y20 wp25 h20 vFirstDate Section,

Gui, Add, Text, x10 y70 w120 h20 , Second Date:
Gui, Add, DateTime, x120 y70 wp25 hp vSecondDate Section,

Gui, Add, Button, x195 y110 w70 h25 Default, &OK
Gui, Show, w280 h140, Выбор периода фильтрации 
Return

ButtonOK:
Gui, submit, nohide

FormatTime, FirstDate , %FirstDate% , dd.MM.yyyy
FormatTime, SecondDate , %SecondDate% , dd.MM.yyyy

xl.Worksheets(1).Range("A1:AX1").AutoFilter(18, ">=" FirstDate, xlAnd := 1, "<=" SecondDate)

GuiClose:
Gui, Destroy

Если  файл содержит фильтр, то сразу после запуска скрипта вылетает ошибка с Конфликтом имен,  пробовал

xl.ActiveWorkbook.Item("_FilterDatabase").Delete 

- не помогает,

ControlSend, EDTBX1, ******, Конфликт имен

не помогает, .xlsx в .xls не вариант.

Заранее спасибо!

2

Re: AHK: Excel_FilterDatabase

path = ....    .xlsx
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open(Path)
Xl.ActiveWorkbook.Names.Item("_FilterDatabase").Delete
Xl.Visible := true

3

Re: AHK: Excel_FilterDatabase

OFF: inseption86, red2881, надо не просто «Xl.Workbooks.Open(Path)», а запоминать ссылку на объект открываемой Рабочей книги, возвращаемую методом .Open(), и работать дальше с ней, а не заниматься извращениями в виде ActiveWorkbook. То же самое касается xl.Worksheets(1) и т.п.

4 (изменено: svoboden, 2018-06-25 00:03:17)

Re: AHK: Excel_FilterDatabase

А в чем вопрос заключается? Вы хотите установить этот фильтр или его удалить? Если не хотите открывать excel, то используйте ComObjGet(path) вместо ComObjCreate("Excel.Application").

5

Re: AHK: Excel_FilterDatabase

red2881
Всё равно вылетает окно с конфликтом имен!

6

Re: AHK: Excel_FilterDatabase

svoboden

Еxcel надо открывать, но так в открываемом файле стоит активный фильтр, то перед открытием таблицы вылетает окно с ошибкой конфликта имен

7 (изменено: svoboden, 2018-06-25 01:16:36)

Re: AHK: Excel_FilterDatabase

У меня все работает.

8

Re: AHK: Excel_FilterDatabase

...Names.Item("_FilterDatabase").Delete

попобуйте заменить на:

...Names("_FilterDatabase").Delete

9

Re: AHK: Excel_FilterDatabase

Malcev

https://s25.aconvert.com/convert/p3r68- … -uyvnz.gif

10

Re: AHK: Excel_FilterDatabase

Xl.ActiveWorkbook.Names.Item("_FilterDatabase").Delete

Работает с файлами которые не выдавали конфликт имен.

Для остальных, нужно удалить  строку  _FilterDatabase" localSheetId="0" hidden="1">Лист1!...............</definedName><definedName name=".

ВСЕ, ЧТО ВЫ ДЕЛАЕТЕ, ВЫ ДЕЛАЕТЕ НА СВОЙ СТРАХ И РИСК.

Post's attachments

GIF1.gif 1.79 mb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

11

Re: AHK: Excel_FilterDatabase

red2881

Спасибо, поробую еще раз, но я пробовал удалять эти строки в . xml, но после они всё равно появлялись.