Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверка, открыт ли файл Excel / 7 сообщений из 7, страница 1 из 1
12.09.2016, 13:27
    #39307554
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка, открыт ли файл Excel
Уважаемый форум, поискал, но ответа на вопрос не нашел: как проверить средствами 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
12.09.2016, 13:37
    #39307561
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка, открыт ли файл Excel
IFKостается открытым файл xl_read
xl_read - не файл, а объект типа Excel.Application.
...
Рейтинг: 0 / 0
12.09.2016, 14:28
    #39307621
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка, открыт ли файл Excel
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
12.09.2016, 14:28
    #39307622
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка, открыт ли файл Excel
объявление As workbook возможно придется заменить на As object, т.к. вряд ли у Вас подключена библиотека, судя по позднему связыванию.
...
Рейтинг: 0 / 0
12.09.2016, 14:31
    #39307624
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка, открыт ли файл Excel
The_Prist,

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

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

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


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