Страницы: 1
RSS
Проверка открытости/закрытости открываемой книги
 
Добрый день. Имеется макрос, который вызывает диалоговое окно открытия файла, из которого в дальнейшем будут ВПРится данные. Как можно сделать так, чтоб до открытия диалогового окна выполнялась проверка открыт или закрыт данный файл. Если он открыт, то сразу из него ВПРить, если закрыт, то вызвать окно открытия макроса.
Код
Sub VPR()
    
    FileOpen = Application.GetOpenFilename
    Workbooks.Open FileOpen
    FileName = ActiveWorkbook.Name
    Workbooks("qqqqqqq1.xlsm").Activate
    Range("B1").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1]," & FileName & "!R1C1:R7C2,2,0)"
            
End Sub
 
Не понимаю Ваших действий конечно.
Код
    If IsBookOpen("Книга1.xls") Then
        'действия при открытой книге
    Else
        'действия при закрытой книге
    End If
 
Viper52, Немного бредовая ситуация. Определить книгу куда ведет формула можно только по формуле. Если так, то считать формулу,  и распарсить
.Range("A1").Formula . Если книга открыта, то будет просто имя книги, если закрыта, то полный путь, а тут все просто , если есть \ то это пусть, нет - имя книги. Только зачем все это -  мне не понятно.
По вопросам из тем форума, личку не читаю.
 
Цитата
Viper52 написал:
выполнялась проверка открыт или закрыт данный файл
Как проверить открыта ли книга?
и вообще поиск по форуму и инету в большинстве случаев на подобные вопросы дает массу результатов.
Да и Ваше понимание работы ссылок в Excel весьма далеко от истины. Имя книги должно быть в квадратных скобках. А помимо имени самой книги нужно еще и имя листа, которое Вы вообще никак не указываете почему-то.
И следовательно, учитывая все выше озвученное, код может свестись к такому:
Код
Sub VPR()
    Dim FileName As String
    FileName = "Книга1.xlsx"
    If Not IsBookOpen(FileName) then
        FileOpen = Application.GetOpenFilename
        Workbooks.Open FileOpen
        FileName = ActiveWorkbook.Name
    End If
    Workbooks("qqqqqqq1.xlsm").Sheets("Имя листа").Range("B1").FormulaR1C1 = _
        "=VLOOKUP(RC[-1],'[" & FileName & "]Лист1'!R1C1:R7C2,2,0)"
End Sub
Имена листов и нужных книг свои поставьте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх