Страницы: 1
RSS
Корректное закрытие ОКНА Excel макросом
 
Добрый день!  
 
Подскажите, пожалуйста, каким образом можно решить следующую задачу.  
 
Я написал скрипт (макрос), который выполняется в момент открытия книги, после чего книга тут же закрывается. Однако если вызывать метод ThisWorkbook.Close, то закрывается именно сама книга скрипта, но не окно Excel, в котором эта книга была открыта. Если же применять метод Application.Quit, то закрываются любые открытые на данный момент окна Excel. Мне же необходимо "уничтожить" только то окно, в котором выполнялся мой скрипт.  
 
Подозреваю, что данная операция осуществляется при помощи API-функций. Но основная проблема, с которой я столкнулся в их применении - это получение дескриптора "моего" окна Excel. Порывшись в сети, наткнулся на функцию FindWindow, однако она в качестве параметра принимает переменную lpClassName, а как получить ее значение для моего приложения я не знаю ...  
 
Может быть, есть иные способы реализовать закрытие окна?..  
 
Буду очень признателен за помощь!
 
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close  
Если я правильно понял автора...  
Только возможно еще нужно учитывать скрытые книги типа personal.xls  
 
The_Prist, не вижу разницы в данном случае между ThisWorkbook и ActiveWorkbook - можно написать Workbooks("имя_книги") и будет тоже самое. Обращение идет к одному и тому же объекту - книге.
Bite my shiny metal ass!      
 
{quote}{login=The_Prist}{date=09.11.2009 02:19}{thema=}{post}А я вот сейчас только подумал. Человек ведь имеет ввиду именно окно Excel, а не книгу. Ложанулся я, короче.{/post}{/quote}  
я думаю Вы правы,  
в крайнем сучае разница как в формулировки так и врезультатах схожа  
Activewindow.close  
нужно уточнить у автора  
имя макроса случайно не Workbook_Open()  
Если другое, то нет ли там текста Workbooks.Open(...)
 
приношу извинения за безграмотность
 
Большое спасибо всем откликнувшимся!  
 
Лузер, скорее всего предложенное Вами решение сработает в том ключе, в котором мне и нужно!  
 
На всякий случай прилагаю скриншот с пояснением того, что я подразумеваю под "книгой" и "окном Excel". :-))
 
А Windows("Имя_Книги").Close не подойдёт?
 
{quote}{login=Юрий М}{date=09.11.2009 02:46}{thema=}{post}А Windows("Имя_Книги").Close не подойдёт?{/post}{/quote}Думаю, нет. Я попробовал с АктивВиндоу.Клозе - эффект тот же что и с книгой, а как к окну обращаться - без разницы, как и с книгой.
Bite my shiny metal ass!      
 
Антон, в случае с ThisWorkbook.Close Вы имеете пустое окно эксель, если других книг не было открыто? Тогда этот код для Вас.
Bite my shiny metal ass!      
 
Лузер™, Ваше решение подошло идеально!  
 
Большое спасибо за помощь!
Страницы: 1
Читают тему
Loading...