Страницы: 1
RSS
Обратиться к активному листу закрытой книги, Как ексел узнаёт имя?
 
Получаю данные из закрытой книги:

Код
Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")

With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=C:\ПРТ1.xls;" & "Extended Properties=Excel 8.0;"
    .Open
End With

sCon = "select * from [Результат$]"
Set rs = cn.Execute(sCon)
[a2].CopyFromRecordset rs
Вопрос: как обратиться не к листу  "Результат", а к листу, который был бы активен если бы книгу отрыли?
Ведь ексел запоминает при закрытии активный лист и при открытии открывае его
 
В xml оно есть:
<workbookView xWindow="240" yWindow="105" windowWidth="14805" windowHeight="8010" activeTab="3" />.
Возможно это оно - отсчёт с 0.
А может и нет...
Но в любом случае вытянуть индекс, затем по индексу название листа (в этом же файле) - непростая задачка.
Изменено: Hugo - 28.01.2014 01:39:57
 
А если перед закрытием книги записать макросом имя активного листа на очень скрытый лист?
 
удалил
Изменено: ikki - 28.01.2014 07:39:36
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Перед закрытием можно записать куда угодно - если работа на одной машине, то писать можно в реестр или в другой файл (ini, txt).
Но думаю проще вего открыть всёж его через getobject(), прочитать имя активного листа, закрыть, взять данные.
 
Игорь, мне кажется, что через open readonly будет быстрей. У getobject нет опции readonly.
Я сам - дурнее всякого примера! ...
 
Не знаю... У меня дома например open ужасно тормозит, любой файл открывает секунд так 20-30 (кажется антивирус мутит), а getobject() отрабатывает быстро.
 
У меня Экс отдельно запускается моментально. Потом, если перетянуть на него файл, открывается мгновенно. Если файл просто открывать щелчком, то секунд 20 даже для самого мелкого. При этом все эксельские пути и расширения занесены в исключения. :(
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх