Закрыть файл, открытый до запуска программы - 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:

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы