Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Как из закрытой книги Excel при помощи VBA вытащить количество и название листов

Автор StLetchik, 31.10.2024, 14:03:37

« назад - далее »

StLetchik

Доброго всем дня!
Небольшой вопросик.
  О том, как вытащить данные из закрытой книги написано на различных сайтах и форумах достаточно. А вот как из закрытой книги вытащить количество и название листов - найти ни где не могу. Неужели в VBA нет такой возможности?
    Если есть - прошу привести пример кода, или ссылку где об этом можно прочесть.
Спасибо!

Дмитрий Щербаков(The_Prist)

А почему в курилке? Перенес в основную ветку
Не совсем понимаю, конечно, зачем список листов без открытия книги, но...
Sub ExistsSheet()
    Dim oConn As Object
    Dim objRS As Object
    Dim sf$, avr, avsh, li&, lr&, lc&
   
    sf = "C:\Users\the-p\Desktop\RelatedTable.xlsm"
    Set oConn = CreateObject("ADODB.Connection")
    oConn.CursorLocation = 3
    oConn.Open "DBQ=" & sf & ";Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};ReadOnly=1;"
    Set objRS = oConn.OpenSchema(20) '20 = adSchemaTables, т.е. список таблиц
    'Cells(1, 1).CopyFromRecordset objRS
   
    li = objRS.RecordCount
    avr = objRS.getrows(li, 0)
    ReDim avsh(1 To li, 1 To 1)
    For lr = 0 To li - 1
        avsh(lr + 1, 1) = avr(2, lr)
    Next
    Cells(1, 1).Resize(li, 1).Value = avsh
    objRS.Close
    oConn.Close
    Set objRS = Nothing
    Set oConn = Nothing
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

StLetchik

Дмитрий!
Спасибо за ответ.
  По поводу "Зачем это надо?". Имеется "доверенная" папка с файлами. В каждом файле от одного и более листов. Названия файлов и листов разные. При открытии любого файла - срабатывает событие "Open" и данные обновляются, некоторые листы могут удаляться, могут создаваться новые.
  Мне надо вытягивать данные с некоторых листов без их обновления и тем паче до их удаления. Если я жестко прописываю в своем макросе путь, название файла и листа то данные вытаскиваются без проблем. Но названия и количество листов в каждом файле мне заранее не известны.
Скопировать файл и запустить без поддержки макросов я не могу. Для этого и надо макросом вытянуть названия листов из закрытой книги.

Дмитрий Щербаков(The_Prist)

Цитата: StLetchik от 31.10.2024, 15:09:15При открытии любого файла - срабатывает событие "Open" и данные обновляются, некоторые листы могут удаляться, могут создаваться новые
такое обходится иначе - в самом начале кода открытия книги (перед открытием книг) просто отключаете отслеживание событий:
Application.EnableEvents = Falseа после всех действий возвращаете:
Application.EnableEvents = TrueТогда событие Workbook_Open не будет срабатывать при открытии книги макросом. И там уже можно будет считать и листы и диапазоны и все, что нужно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

StLetchik

Доброе утро!
Еще раз спасибо!
  Вот уж во истину - "Самолеты изобретают люди, которым лень изобрести велосипед".
Без системных знаний ходим огородами.

Яндекс.Метрика Рейтинг@Mail.ru