Страницы: 1
RSS
Shift прерывает выполнение макроса
 
Добрый день.  
 
У меня есть макрос который пробегает по файлам папки. Каждый файл он открывает и собирает там нужную информацию. Но не суть.  
Суть в том что если при выполнении макроса нажать клавишу shift, то макрос открывает следующий по циклу файл и прерывается, как будто он закончился.  
Гуглил по этой теме и нашел что shift вроде как прерывает макросы или что то вроде того.  
Может кто сталкивался с таким. Если да, то можно ли это обойти?
 
Выкладывайте свой макрос - посмотрим.  
На мои макросы Shift вроде никак не действует...  
 
PS: А нафига тыкать кнопки в момент работы макроса?
 
Выложу вечером.  
 
Тыкать приходится так как макрос пробегает по больше чем 10 000 файлам. И не пользоваться компом как то неудобно:)
 
Сделал пример.  
В архиве файл stat.xls(из него запускать макрос) и папка test(там файл testfile.xls который будет открываться макросом). В папке test сделай по больше копий файла testfile.xls чтобы макросу было с чем работать.  
 
В общем пример ничего интересного не считает, так как в данном случае это неважно.  
Во время того как макрос будет выполнятся по нажимай кнопку shift, и макрос остановится. На работе мне хватает одного нажатия, дома раза с четвертого:)  
 
Заранее благодарю за помощь:)
 
Ерунда какая-то...  
действительно, макрос останавливается нажатием SHIFT (у меня - всегда с первого раза)  
 
Танцы с бубном не помогли - пришлось использовать такое решение:  
While KeyPressed(VK_SHIFT): DoEvents: Wend    ' ждём, пока не отпустят SHIFT  
 
 
Код взят отсюда: http://excelvba.ru/code/KeyPressed  
 
Теперь макрос ждёт, пока не будет отпущена клавиша SHIFT, и лишь после этого продолжает открывать файлы.  
 
 
Пример - в файле: http://excelvba.ru/XL_Files/Sample__26-12-2010__21-45-02.zip  
(немного переделал ваш код - добавил паузы, сделал вывод информации в строку состояния, и т.п.)
 
Совсем забыл - после строки  
wb.Close False  
 
добавьте строку  
If n Mod 10 = 0 Then Application.ScreenUpdating = True: Application.ScreenUpdating = False  
 
 
Это позволит после переключения на Excel вернуться обратно к другому приложению  
(эта строка перерисовывает экран Excel после каждого 10-го файла)  
Без этой строки второй раз на другое приложение у меня переключиться не получилось - Excel забирает все ресурсы компа.  
 
PS: Если кто знает более элегантное решение этих проблем - пожалуйста, поделитесь.
 
Спасибо! сейчас попробую.  
 
Вообще я много гуглил по этой теме, и только в двух местах встречал подобные темы. И нигде небыло конкретного решения данной проблемы. Только описание, что это какая то "офисная" фишка...  
 
Ладно если накопаю ещё что-нибудь, то отпишусь здесь.  
 
Ещё раз спасибо
 
Поискал по англ. сайтам и наткнулся на решение, подобное вашему.  
 
http://www.jkp-ads.com/Articles/WorkbookOpenBug.asp  
 
p.s. там написано что ms признал этот баг...
Страницы: 1
Читают тему
Наверх
Loading...