16:47

примитивное не страшно, главное - чтоб надежно (с)
Люди добрые, как в VB/VBA определить, открыт файл или нет? В частности, книга Excel.


Комментарии
06.03.2006 в 21:57

Инженер-электрик
По-моему, если файл открыт, то открыть его функцией Open не удастся. Как вариант не пойдет?
07.03.2006 в 01:38

По-моему, если файл открыт, то открыть его функцией Open не удастся.



Файл может не существовать...ИМХО, сделать две попытки: на существование и на открытие :duma:
07.03.2006 в 01:47

Инженер-электрик
GreenWarrior если файл не существует, функция его создаст
07.03.2006 в 10:31

если файл не существует, функция его создаст



Согласен, но нужно ли это автору?
07.03.2006 в 11:03

примитивное не страшно, главное - чтоб надежно (с)
xelbr , GreenWarrior, можно было бы воспользоваться циклом



Sub one()

For i = 1 To Workbooks.Count

If Workbooks(i).Name = <Filename> Then

Workbooks(i).Close

Kill <Filename>

End If

Next i

End Sub



если бы не одно "но": если открыто два и более приложений Excel, макрос из книги, открытой в одном приложении, "не видит" книг, открытых в прочих приложениях. А задача именно в том, чтобы закрыть книгу, если она открыта, и "убить" ее.

Вообще-то я просто-напросто уже решил задачу другим путем (разные имена файлов с добавлением даты создания в имя и кое-какой другой информации), но интересно было бы все-таки докопаться до сути. Может пересчитывать excel книги из отдельного exe файла, созданного в "обычном" бэйсике, а потом "winapi::openfile( .exe);" ?