powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка, открыт ли файл Excel
7 сообщений из 7, страница 1 из 1
Проверка, открыт ли файл Excel
    #39307554
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Уважаемый форум, поискал, но ответа на вопрос не нашел: как проверить средствами VB открыт ли Excel файл, при условии, что у пользователя могут быть открыты другие книги Excel?

Проблема в том, что прога открывает файлы Excel для работы с данными, при ошибке в программе, нужна проверка, остались ли открытыми файлы Excel. По результатам проверки, открытые файлы нужно закрыть, не закрывая при этом другие файлы Excel, открытые пользователем.

Использую конструкцию:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Try
            xl_read = CreateObject("Excel.application")
            xl_read.DisplayAlerts = False
            xl_read.Visible = False
            xbk_read = xl_read.Workbooks.Open(QIMS_export)
            xsh_read = xbk_read.Worksheets(1)
            xsh_read.Activate()

... работа с открытыми файлами

        Catch
            MsgBox("Something went wrong! Please call Admin!" & vbCrLf & Err.Description, vbCritical, "Ups..")
        Finally
            xbk_read.Close(False)
            xl_read.Quit()
            xsh_read = Nothing
            xbk_read = Nothing
            xl_read = Nothing
End try



При этом почему-то при ошибке в программе секция Finally не отрабатывается - остается открытым файл xl_read.

Спасибо!
...
Рейтинг: 0 / 0
Проверка, открыт ли файл Excel
    #39307561
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKостается открытым файл xl_read
xl_read - не файл, а объект типа Excel.Application.
...
Рейтинг: 0 / 0
Проверка, открыт ли файл Excel
    #39307621
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK,

ну так пройдитесь циклом по всей коллекции Workbooks и определите по имени - открыт ли файл или нет:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function IsWbOpen(sWbName as string) as boolean
'sWbName = "Книга1.xlsx"
dim wb as workbook
for each wb in xl_read.workbooks
if (wb.name = sWbName ) then
IsWbOpen = true
end if
next
end function

'вызываем в коде:
dim wb as workbook
if IsWbOpen("Книга1.xlsx") then
wb = xl_read.Workbooks("Книга1.xlsx")
else
wb = xl_read.Workbooks.Open(QIMS_export)
end if


что-то в этом роде. Писал на коленке и в VB не проверял(у Вас, кстати, точно VB? Не VB.Net?)
...
Рейтинг: 0 / 0
Проверка, открыт ли файл Excel
    #39307622
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объявление As workbook возможно придется заменить на As object, т.к. вряд ли у Вас подключена библиотека, судя по позднему связыванию.
...
Рейтинг: 0 / 0
Проверка, открыт ли файл Excel
    #39307624
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
The_Prist,

VB.Net. Пардон, не указал сразу.
Попробую Ваш рецепт.
...
Рейтинг: 0 / 0
Проверка, открыт ли файл Excel
    #39307626
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Akina,

Моя ошибка, не xl_read, a xbk.read.
...
Рейтинг: 0 / 0
Проверка, открыт ли файл Excel
    #39307631
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK,

просто для NET другой раздел форума...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка, открыт ли файл Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]