Привет всем !
Помогите пожалуйста ...кто может
Отрываю из 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
Windows(Blib).Visible = False ? Не работает
Модератор: Naeel Maqsudov
Jojo®
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Если Вы привели весь код, то дело ясное
Переменная Blib не определена.
Тогда обращение к коллекции окон вызовет указанную ошибку.
Проверьте, чему равна Blib на момент вызова Windows(Blib)
То же касается и переменной book в предпоследней стоке (перед End If).
Переменная Blib не определена.
Тогда обращение к коллекции окон вызовет указанную ошибку.
Проверьте, чему равна Blib на момент вызова Windows(Blib)
То же касается и переменной book в предпоследней стоке (перед End If).
Нет это кусок кода ...
Переменная 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
Переменная 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
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Blib должна точно соотетствовать тому, что мы видим в меню Окно, под цифрами 1, 2, 3...Windows(Blib).Visible = False ' А так нет ...
Excel.Application.Windows(1).Visible = False ' -Вот так работает
Если в названии файла первая буква заглавная, то окно с названием "lib_zt.xls" также не будет найдено в коллекции Windows. Скорее всего в этом дело.
А при работе с индексами (номерами окон) надо учитывать, что окна постоянно перестраиваются. Например если открыто 2 окна и делается Windows(1).Visible = False, индекс окна может измениться и тогда для возврата его на место потребуется Windows(2).Visible = True
PS
Если Вы хотите сделать что-то вроде библиотеки - т.е. макросы оттуда вызывать, а чтобы книги видно не было, то почитайте про надстройки (*.XLA). Велосипед уже изобретен.
-
- Сообщения: 97
- Зарегистрирован: 12 окт 2015, 04:09
- Откуда: Guam
- Контактная информация:
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
virtual hosting