Закрыть файл, открытый до запуска программы - VB
Формулировка задачи:
Доброго времени суток всем!!!
Добросовестно 3 часа копал сеть перед тем как спросить).
Ситуёвина:
Есть Excel)....в нём открыто (ранее!! до запуска работы кода, не самим кодом!!!) более 1го файла...1.xlsx и 2.xlsx например.
Требуется убить процесс, например, только 1.xlsx, а я умею только весь(все) EXCEL.EXE
Кому интересно зачем):
Вообще я это хочу сделать для предотвращения ошибок доступа проги к файлу (База данных) - проверяет открыт ли он (может и несколько процессов висеть), убивает ТОЛЬКО его (т.е. если юзверь открыл другие доки - не трогает их) пока его совсем не станет.
Так то работает нормально (сам код закрывает), но не хочется потом иметь проблем с этим. Иногда при отладке, после завершения кода "на середине", висит несколько экземпляров процесса одного и того же файла, и потом пока вручную их не покиллишь - не будет работать. Вот это и хочу автоматизировать, т.е. мало ли что, а прога сама "готовит среду") для работы.
Что-то вроде:
Только с excel и ТОЛЬКО для этого файла, без затрагивания работы пользователя с другими файлами excel. И ещё - они висят только в диспетчере, на панели не видно, т.е. с получением хэндла окна наверно не прокатит.
P.S. Понимаю, что можно и без этой перестраховки, просто точно отладить код, но уже интересно). Если что не так простите - сам я полгода самоучка).
Интересует ТОЛЬКО 6.0
.NET не юзаю - не нашел на х64, да и прога уже написана.Решение задачи: «Закрыть файл, открытый до запуска программы»
textual
Листинг программы
Dim MyFileFullPath$, wb MyFileFullPath = "C:\temp\Книга1.xls" On Error Resume Next With GetObject(, "excel.application") 'если ошибка, то Excel не запущен, ничего не делать If Err Then Err.Clear: GoTo 1 For Each wb In .workbooks 'перебрать открытые книги If wb.FullName = MyFileFullPath Then wb.Close False 'без сохранения, True - с сохранением Exit For End If Next End With 1:
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д