Страницы: 1
RSS
Как правильно скрыть книгу?
 
Всем привет.
Столкнулся с такой проблемой...
Возникла идея сделать форму для работы с макросом и скрыть книгу с этим макросом, чтобы всё выглядело как отдельная программа с красивым пользовательским интерфейсом. Т.е. чтобы пользователь просто кликал на ярлык и у него сразу открывалась форма.
Попытался использовать "Application.Visible = False" и "Application.Visible = True", но в таком случае после второй команды появляются ещё два пустых окна Excel, которые закрываются только через диспетчер задач (скрин во вложении). Понятия не имею почему так происходит...
Весь код выглядит примерно так:
Код
Private Sub CommandButton1_Click()
    Application.Visible = False
    Application.Visible = True
End Sub

"ThisWorkbook.Windows(1).Visible = False" скрывает книгу, но всё равно оставляет видимым пустое окно Excel, выглядит некрасиво.
Есть ещё какие-нибудь способы сделать всё аккуратно? Или может быть я неправильно использую предыдущие методы?
Спасибо.
 
Цитата
theOzymandias написал:
Application.Visible = False    
Application.Visible = True
Вы скрываете и потом сразу же отображаете приложение.
Application.Visible = False    назначьте на событие открытия книги, а True - на закрытие.
 
Игорь, этот кусок кода я вставил для примера.
Куда бы я не поставил эти строки, итог всегда один - лишние незакрывающиеся окна.
 
Ну так файл покажите, кто же знает как и куда
Цитата
theOzymandias написал:
Куда бы я не поставил эти строки
 
Цитата
_Igor_61 написал:
Ну так файл покажите, кто же знает как и куда
Игорь,
В первом посте я показывал код кнопки, которая просто скрывает и сразу же показывает приложение. Это пока всё что я накодил. Смысл двигаться дальше, если даже это не работает? :)
До нажатия кнопки видна только книга с макросом. После нажатия - сразу 3, как на скрине.
Возможно это как-то связано со скрытой личной книгой макросов, PERSONAL которая. Но я всё равно не знаю, как это можно исправить...
 
Доброе время суток
Цитата
theOzymandias написал:
Смысл двигаться дальше, если даже это не работает?
А почему это должно работать? У вас большие проблемы с разносом кода на две кнопки?  :D
Код
Private Sub CommandButton1_Click()
    Application.Visible = False
End Sub

Private Sub CommandButton2_Click()
    Application.Visible = True
End Sub
 
Цитата
Андрей VG написал:
А почему это должно работать? У вас большие проблемы с разносом кода на две кнопки?
Андрей,
Спасибо, но вопрос не в этом. Две кнопки или одна - совершенно не важно. Я просто очень упростил пример.
Проблема в том, что как только отрабатывает строчка "Application.Visible = True" (где бы она ни стояла и к какой бы кнопке ни была привязана), появляются две пустые книги, которые закрываются только диспетчером задач.
Я подозреваю, что эта команда помимо моей книги с макросом делает видимым еще какие-то изначально скрытые элементы. Но эти два пустых окна никак не подписаны, и понять, что это вообще такое, у меня не получается...
 
Цитата
theOzymandias написал:
эта команда помимо моей книги с макросом делает видимым еще какие-то изначально скрытые элементы
нет. Это отображение приложения. Лишние элементы могут появиться по ходу выполнения кода, который мы не видим(например, использование CreateObject)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
theOzymandias написал:
Возникла идея сделать форму для работы с макросом и скрыть книгу с этим макросом, чтобы всё выглядело как отдельная программа с красивым пользовательским интерфейсом. Т.е. чтобы пользователь просто кликал на ярлык и у него сразу открывалась форма.
Возникла точно такая же проблема пару лет назад, до сих пор не нашел ответа.
Подскажите пожалуйста, это возможно или нет?
Кросс (от 19.05.2018 без ответов)
Необходимо свернуть Excel в панель задач при запуске формы.
Код
Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    UserForm1.Show 0
End Sub
Можно ли сделать так, чтобы при открытии формы окно самого приложения Excel не мелькало, вообще не появлялось на экране? Сейчас сначала загружается окно приложения, потом оно сворачивается в панель задач и лишь затем загружается форма.
 
#2:
Цитата
_Igor_61 написал:
Application.Visible = False    назначьте на событие открытия книги, а True - на закрытие.
 
Цитата
aequit написал:
Можно ли сделать так, чтобы при открытии формы окно самого приложения Excel не мелькало, вообще не появлялось на экране? Сейчас сначала загружается окно приложения, потом оно сворачивается в панель задач и лишь затем загружается форма.
Спасибо, конечно, но всё равно окно приложения мелькает перед открытием формы... (
 
Цитата
aequit написал:
окно приложения мелькает перед открытием формы
конечно, ведь VBA - это часть Excel. И сначала должен загрузиться именно Excel и книга с кодом и только потом код скомпилируется и выполнит заданные действия. Поэтому от мелькания полностью здесь не уйти. Если только не написать программу вообще не в Excel, а изначально в языке программирования с возможностью создания отдельных приложений.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ясно, спасибо. Отрицательный результат - тоже результат.

Для запуска макроса word в фоновом режиме использую внешнюю "оболочку" на языке Autoit, при этом используется ссылка на приложение word и макрос из normal.dotm
Получается полностью фоновый режим, незаметный для юзера. Жаль, что для Excel подобный фокус не пройдет (
 
Цитата
aequit написал:
Жаль, что для Excel подобный фокус не пройдет
а Вы пробовали? Autoit - это отдельная программа, которая обращается к Word. Сделайте тоже самое с Excel и попробуйте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
а Вы пробовали? Autoit
С Excel подружить Autoit никак не получается(

Сделал вариант с использованием VBS скрипта, но тут минус - дополнительный файл. Зато никакого мелькания приложения Excel ни при открытии формы, ни при её закрытии.
Может ТС это подойдет (оба файла поместить в один каталог и запустить скрипт).
Страницы: 1
Наверх