Тема: Как узнать, открыт ли в автокаде открываемый файл?
не подскажете, как узнать,открыт ли в автокаде открываемый файл?
(чтобы не открывать его еще раз?)
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как узнать, открыт ли в автокаде открываемый файл?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
не подскажете, как узнать,открыт ли в автокаде открываемый файл?
(чтобы не открывать его еще раз?)
Public Function IsOpened(FullFileName As String) As Boolean Dim Docs As AcadDocuments Dim Doc As AcadDocument IsOpened = False Set Docs = Application.Documents For Each Doc In Docs If StrComp(FullFileName, Doc.FullName) = 0 Then IsOpened = True Exit Function Next End Function
что-то у меня не получается.
если уже файл открыт,оноткрывается еще раз
вот как я делаю
Function ShowOpen(title As String) As String Dim file As String Dim strTmp As String Dim VertName As OPENFILENAME VertName.lStructSize = Len(VertName) VertName.hwndOwner = ThisDrawing.HWND VertName.lpstrFilter = "AutoCAD drawings (*.dwg)" + _ Chr$(0) + "*.dwg" + Chr$(0) VertName.lpstrFile = Space$(254) VertName.nMaxFile = 255 VertName.lpstrFileTitle = Space$(254) VertName.nMaxFileTitle = 255 VertName.lpstrInitialDir = CurDir VertName.lpstrTitle = title VertName.flags = 0 If GetOpenFileName(VertName) Then strTmp = (Trim(VertName.lpstrFile)) file = Mid(strTmp, 1, Len(strTmp) - 1) If Not IsOpened(file) Then ShowOpen = file Else: MsgBox "файл уже открыт!" End If End If End Function
Не знаю в чём тут дело но строка:
ShowOpen = file
должна быть написана так:
file=ShowOpen
Я бы проверку на ужеоткрытость вынес за рамки этой диалоговой процедуры
потому как не видно что делаете дальше...
у меня сей код работает великолепно.
только я его уже слегка модифицировал: функция возвращает ссылку на документ если он открыт или Nothing если не открыт.
и дальше если надо возиться с документом - сразу получаю к нему доступ или открываю например вот так:
Set MainDoc = IsOpened(FName) If MainDoc Is Nothing Then Set MainDoc = ThisDrawing.Application.Documents.Open(FName, True) End If Public Function IsOpened(FullFileName As String) As AcadDocument Dim Docs As AcadDocuments Dim Doc As AcadDocument Set IsOpened = Nothing Set Docs = Application.Documents For Each Doc In Docs If StrComp(FullFileName, Doc.FullName) = 0 Then Set IsOpened = Doc Exit Function End If Next End Function
2 Миша: у него все правильно было написано: функции передается имя файла, которая она вернет потом в вызываемую функцию...
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как узнать, открыт ли в автокаде открываемый файл?
Форум работает на PunBB, при поддержке Informer Technologies, Inc