Windows(Blib).Visible = False ? Не работает

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
jojo
Сообщения: 14
Зарегистрирован: 24 май 2004, 11:20
Контактная информация:

24 май 2004, 11:29

Привет всем !

Помогите пожалуйста ...кто может :)
Отрываю из excel еще один файл и пытаюсь сделать его невидимым в панли задач...
Вылазит error Subscript out of range
в строке - Windows(Blib).Visible = False
коментарю ее все работает нормально,т.е. файл открывается ...
а невидимым не хочет быть ...

path1 = Workbooks("zt.xls").Sheets("Общие_данные").Cells(3, 3).Value

If Not path1 & Blib = "" Then
Application.DisplayAlerts = False
ActiveWorkbook.UpdateRemoteReferences = False
Workbooks.Open(path1 & Blib).RunAutoMacros xlAutoOpen
Windows(Blib).Visible = False

Else
MsgBox theTitle & Chr(10) & Chr(13) & "Выполнение программы прервано", _
theCode, theTitle
Workbooks(book).Close SaveChanges:=False
End If
Jojo®
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

25 май 2004, 02:07

Если Вы привели весь код, то дело ясное

Переменная Blib не определена.

Тогда обращение к коллекции окон вызовет указанную ошибку.

Проверьте, чему равна Blib на момент вызова Windows(Blib)

То же касается и переменной book в предпоследней стоке (перед End If).
jojo
Сообщения: 14
Зарегистрирован: 24 май 2004, 11:20
Контактная информация:

25 май 2004, 06:58

Нет это кусок кода ...
Переменная blib и book описаны ...
Public Blib As String
Public Book As String
......
Public Sub pr_lib()
'проверка наличия открытой библиотеке
Blib = "lib_zt.xls"
theCode = vbOKOnly + vbCritical
theTitle = "Ошибка открытия библиотеки"
ActiveSheet.Application.ScreenUpdating = False
'открытие библиотеки
'path1 = CurDir$()
path1 = Workbooks("zt.xls").Sheets("Общие_данные").Cells(3, 3).Value

If Not path1 & Blib = "" Then
Application.DisplayAlerts = False
ActiveWorkbook.UpdateRemoteReferences = False
'Workbooks.Open(path1 & Blib).RunAutoMacros xlAutoOpen
Windows(Blib).Visible = False ' А так нет ...
Excel.Application.Windows(1).Visible = False ' -Вот так работает

Else
MsgBox theTitle & Chr(10) & Chr(13) & "Выполнение программы прервано", _
theCode, theTitle
' Workbooks(book).Close SaveChanges:=False
End If
Jojo®
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

26 май 2004, 08:37

Windows(Blib).Visible = False ' А так нет ...
Excel.Application.Windows(1).Visible = False ' -Вот так работает
Blib должна точно соотетствовать тому, что мы видим в меню Окно, под цифрами 1, 2, 3...
Если в названии файла первая буква заглавная, то окно с названием "lib_zt.xls" также не будет найдено в коллекции Windows. Скорее всего в этом дело.


А при работе с индексами (номерами окон) надо учитывать, что окна постоянно перестраиваются. Например если открыто 2 окна и делается Windows(1).Visible = False, индекс окна может измениться и тогда для возврата его на место потребуется Windows(2).Visible = True


PS
Если Вы хотите сделать что-то вроде библиотеки - т.е. макросы оттуда вызывать, а чтобы книги видно не было, то почитайте про надстройки (*.XLA). Велосипед уже изобретен.
GeorgeSoca
Сообщения: 0
Зарегистрирован: 12 окт 2015, 04:09
Откуда: Guam
Контактная информация:

17 окт 2015, 03:50

On our web, you can feel safe! Besides we use mirrored hard drives on all of our servers so we also take backup twice a day on separate servers. We use ISPmanager as the control panel. ISPmanager is a control panel that makes it easy to administer its Web site. With us you can place as many websites and domains you wish for a hosting account.
virtual hosting
Ответить