примитивное не страшно, главное - чтоб надежно (с)
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);" ?
Файл может не существовать...ИМХО, сделать две попытки: на существование и на открытие
Согласен, но нужно ли это автору?
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);" ?