Как свернуть окно excel vba

Установка состояния окна приложения Excel из кода VBA с помощью свойства Application.WindowState. Сворачивание и разворачивание окна. Чтение данных о состоянии окна.

Application.WindowState — это свойство, которое задает или возвращает состояние окна приложения Excel.

Состояние окна приложения Excel задается константой из коллекции XlWindowState, при чтении информации о состоянии окна — свойство Application.WindowState возвращает числовое значение константы.

Свойство Application.WindowState позволяет развернуть окно приложения Excel из кода VBA на весь экран — до максимального размера, свернуть окно «в иконку» или задать ему нормальные размеры, установленные ранее, развернув из свернутого или свернув из максимального.

Синтаксис свойства WindowState объекта Application:

Константы XlWindowState

Константы из коллекции XlWindowState:

Константа Значение Описание
xlMaximized -4137 Максимальное окно (развернуто на весь экран)
xlMinimized -4140 Минимальное окно (свернуто «в иконку»)
xlNormal -4143 Нормальное окно (размеры, установленные ранее)

Пример кода с WindowState

Пример записи и чтения свойства Application.WindowState:

Sub Test()

‘Запись свойства WindowState

Application.WindowState = xlMaximized  ‘или -4137

‘Application.WindowState = xlMinimized  ‘или -4140

‘Application.WindowState = xlNormal  ‘или -4143

‘Проверка, в каком состоянии находится окно приложения

MsgBox Application.WindowState

End Sub

Попробуйте по очереди задавать разные константы свойству Application.WindowState и смотрите, какое значение будет считано. У меня получились удивительные результаты при выполнении строк кода по очереди, как в примере:

  • Application.WindowState = xlMinimized — MsgBox возвращает совсем не -4140;
  • после первого запуска Application.WindowState = xlNormal — окно приложения разворачивается на весь экран, после второго запуска — переходит к нормальному состоянию.

Не удалось мне добиться значения -4140 и при минимизации окна вручную, разместив предварительно следующий код в модуль книги:

Private Sub Workbook_WindowResize(ByVal Wn As Window)

    MsgBox Application.WindowState

End Sub


Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Макрорекодер говорит, что надо выполнить команду
[vba]

Код

Application.WindowState = xlMinimized

[/vba]


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

Помогаю со студенческими работами здесь

Как сохранить диаграмму в новую книгу Excel?
Добрый день, уважаемые коллеги

Подскажите пожалуйста, каким образом средствами VBA можно…

Как из Excel/Vba внести открытую книгу в SQL Server 7 как OLE объект?
Хотелось бы так:
При нажатии соотв. кнопки. соединить с SQL Serverом и сохранить activesheet в SQL…

Падает Excel при запуске макроса
Доброго времени суток, уважаемые гуру. Застрял на одном проекте. Пишу прогу на работу для себя. Всё…

Автозакрытие Excel-я при запуске формы
Скажите пожалуйста как сделать чтобы при открытии программы автоматически закрывалась книга экселя?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

Is there a way to minimize a workbook/sheet but able to keep the form opened up?
I have tried the code:

application.visible=false

and

userform1.show vbmodeless

But this hides the all active workbooks and the tool bar ribbon thing disappears as well. Is there a way to minimize the workbook but keep the ribbon showing and form opened as well?

FelixSFD's user avatar

FelixSFD

5,97210 gold badges47 silver badges115 bronze badges

asked Nov 18, 2016 at 14:24

NoobProgrammer's user avatar

NoobProgrammerNoobProgrammer

1911 gold badge2 silver badges11 bronze badges

Tested on Excel 2010

Sub Test()

    ActiveWindow.WindowState = xlMinimized
    UserForm1.Show

End Sub

This will minimize the all the workbooks in Excel but will keep the ribbon and any userforms visible, if you dont have Application.ScreenUpdating = False then people will be able to see the workbooks in the bottom left of Excel.


If you want to just minimize a single workbook you can use the code below

Credit to this answer on SO for the minimizing specific workbooks

Sub test()

    Dim wbName As Window

    Set wbName = ActiveWorkbook.Windows(1)'You can use Windows("[Workbook Name]") as well

    wbName.Visible = False
    wbName.Visible = True

End Sub

Let me know if you need anything clarified

Community's user avatar

answered Nov 18, 2016 at 15:07

Mr.Burns's user avatar

4

{quote}{login=}{date=12.02.2011 10:46}{thema=Re: }{post}{quote}{login=The_Prist}{date=09.02.2011 10:48}{thema=}{post}Так GetObject и есть решение….  
GetObject(«C:Test.xls»)  
откроет книгу Test.xls в невидимом режиме. Т.е. видно её не будет.  

  Еще для скрытия книги с глаз можно использовать:  
ThisWorkbook.Windows(1).Visible = False{/post}{/quote}  

  Пробовал прописывать ThisWorkbook.Windows(1).Visible = False в коде рабочей книги.  
выбивает мне ошибку.после закрытия файла уничтожаются листы книги.  

  попробую описать задачу подробнее.  
моя работа предполагает постоянное обращение к разным книгам екселя. то есть в течении рабочего дня в процессах может исеть до 5 разных кних,с которыми оператор все время работает.  

  книга,на которую я пишу макрос представляет собой 4 листа с разными данными, у которых есть свой срок действия и которые удаляются при открытии файла автоматически,если теряют актуальность (этот код прописан в «Эта книга».  

  User form представляет собой форму поиска по одному из критериев, в результате поиска я имею возможность открыть по гиперссылке файл связанный с этим данным.  
для удобства работы,я сделал,чтобы эта форма сворачивалась в панель задач  

  суть задачи заключается в том,чтобы эта форма работала только с данной книгой (назовем ее database.xls),при этом,чтобы книга была невидимой.  

  то есть в итоге мне нужно получить якобы просто приложение ВБА,которое работает с одной конкретной книгой,не смотря на то,что развернутой может быть и другая книга  

  к сожалению,на работе установлен определенный пакет программ,в который не входит MS visual studio, поэтому делается через ексель.{/post}{/quote}  
интересно чем бы Вам помогла Visual studio / если конечно Вы сами приложение не напишите.    
как мне кажется при открытии любого файла excel ваша книга станет видимой, если конечно вы не будете ее «глушить» как нибудь

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как свернуть таблицу в excel под плюс
  • Как свернуть несколько строк в excel
  • Как свернуть таблицу в excel до всего
  • Как свернуть несколько столбцов в excel
  • Как свернуть строчки в excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии