Как найти окно в excel

Содержание

  • Что такое немедленное окно в Excel VBA?
  • Где найти непосредственное окно?
  • Примеры использования немедленного окна в Excel VBA
  • Закрепление / открепление немедленного окна
  • Немедленное окно не отображается — вот несколько способов его получить

«Немедленное окно» может быть полезным инструментом при работе с VBA в Excel.

Окно «Немедленное» позволяет быстро выполнять такие действия, как:

  • Получить информацию о файлах Excel (например, количество листов в книге или название книги)
  • Получите отладку и быстро распечатайте информацию
  • Выполнить строку кода за секунды
  • Запустить макрос (или вызвать функцию)
  • Получить информацию о переменных (или установить значение или переменные)

Хотя вам не нужно использовать немедленное окно для работы с VBA в Excel, умение правильно его использовать может сделать вас намного эффективнее.

В этом уроке я расскажу все, что вам нужно знать о немедленном окне и о том, как его лучше всего использовать (объяснено с примерами).

Давайте начнем!

Immediate Window — это часть редактора VB, которую вы можете использовать для быстрых действий.

В качестве примера: если у вас есть книга с некоторыми скрытыми листами, и вы хотите быстро узнать общее количество листов, вы можете сделать это за несколько секунд с помощью окна «Немедленное».

Immediate Window делает гораздо больше (как вы увидите позже в этом руководстве). Но для начала давайте представим себе немедленное окно как инструмент, который поможет вам ускорить работу в Excel VBA.

Где найти непосредственное окно?

Когда вы открываете Excel VB-Editor, вы уже можете видеть непосредственное окно как часть VB Editor. И если вы его еще не видите, вы можете легко заставить его появиться.

Ниже приведены шаги, чтобы открыть редактор VB и сделать видимым окно Immediate Window:

  1. Перейдите на вкладку «Разработчик» на ленте Excel (если вы не видите вкладку «Разработчик», нажмите здесь, чтобы узнать, как ее получить)
  2. В группе кода нажмите «Visual Basic». Это откроет редактор VB
  3. В редакторе VB нажмите на опцию «Просмотр» в меню.
  4. Щелкните Немедленное окно. Это приведет к немедленному отображению окна в редакторе VB.

Если вам удобнее работать с ярлыками, ниже приведены некоторые из них, чтобы ускорить выполнение вышеуказанных шагов:

  • Чтобы открыть редактор VB — ALT + F11 (это работает, даже если у вас нет вкладки Разработчик на ленте)
  • Чтобы показать ближайшее окно — Ctrl + G (используйте это, редактор VB открыт)

Примеры использования немедленного окна в Excel VBA

Теперь, когда вы знаете, где найти непосредственное окно, давайте рассмотрим несколько замечательных примеров, где вы можете использовать его при работе с Excel VBA.

Получите информацию о файлах / книгах

«Немедленное окно» — это место, где вы можете задать вопросы о рабочих тетрадях, и оно сразу же даст вам ответ.

Например, предположим, что у вас есть рабочая книга, и вы хотите узнать, сколько листов в ней, вы можете ввести приведенный ниже код в непосредственном окне и нажать клавишу ввода.

? ActiveWorkbook.Sheets.Count

Это мгновенно сообщит вам общее количество листов в активной книге.

Это может быть полезно, когда у вас есть книга, в которой много листов, и вы не можете подсчитать ее вручную (или не хотите), или когда у вас есть книга, в которой есть скрытые листы, и вы хотите узнать общую сумму. считать.

? (знак вопроса) предполагается использовать перед запросом, чтобы VBA мог понять, что вы задаете вопрос. Если вы не используете этот вопросительный знак, немедленное окно не даст вам подробностей / ответа.

Это действительно простой пример, в котором Immediate Window дает вам некоторую информацию и экономит время.

Ниже приведены еще несколько примеров:

Чтобы получить имя активной книги

? ActiveWorkbook.Name

Чтобы получить имя активного листа

? Activesheet.Name

Чтобы получить путь к Рабочей книге (адрес, где она сохранена)

? ActiveWorkbook.Path

Поэтому, если вам что-то нужно об объекте (например, рабочая книга, листы, диаграммы, фигуры, диапазон и т. Д.), Вы можете использовать немедленное окно, чтобы быстро получить эту информацию.

Получить информацию об отладке.

В Excel VBA Debug.Print используется для мгновенного отображения значения переменной в непосредственном окне.

Например, приведенный ниже код мгновенно отобразит сообщение «Доброе утро» в ближайшем окне.

Sub DisplayMessage () Debug.Print "Доброе утро" End Sub

Вы можете использовать строку Debug.Print в своем коде, чтобы быстро получить некоторые данные в непосредственном окне или для отладки кода.

Например, если вы хотите получить имена всех листов в книге, вы можете использовать следующий код:

Sub GetSheetNames () Для каждого sh в ActiveWorkbook.Sheets Debug.Print sh.Name Next sh End Sub

Приведенный выше код просматривает каждый лист в активной книге и дает имя в ближайшем окне.

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

Если вы используете Отладка.Печать чтобы отладить код, не забудьте удалить его, когда закончите.

Запустить макрос (или функцию)

Хотя есть разные способы запустить макрос в Excel, один из быстрых способов — использовать немедленное окно.

Чтобы запустить макрос, все, что вам нужно сделать, это ввести имя макроса в непосредственном окне и нажать клавишу ввода (чтобы это работало, в конце имени макроса должен быть курсор).

Ниже приведен пример, в котором, как только вы вводите имя макроса в непосредственном окне, он запускает код (где код отображает сообщение «Доброе утро» в непосредственном окне).

Это может быть полезно, если у вас есть код и вы хотите проверить, работает ли он должным образом или нет. У вас может быть одна или несколько строк Debug.Print в коде и запускать макрос прямо из окна.

Он мгновенно покажет вам значения в ближайшем окне, и вы можете проверить, все ли работает нормально или нет.

Вы также можете использовать непосредственное окно для выполнения пользовательских функций.

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

Выполнить строку кода (или несколько строк кода)

В немедленном окне вы также можете запустить строку кода (или несколько строк кода).

Самое приятное в этом то, что вы можете просто открыть непосредственное окно, запустить код и закрыть (в отличие от макроса, который вы должны поместить в окно модуля, а затем выполнить).

Сценарий использования, в котором это может быть полезно, — это когда нужно быстро показать все листы в книге.

Ниже приведен код, который можно разместить в непосредственном окне, чтобы отобразить все листы в книге. Поместите курсор в конец строки и как только вы нажмете клавишу ввода, он покажет все листы.

Для каждого листа в Thisworkbook.Sheets: Sheet.Visible = True: Next Sheet

Обратите внимание: хотя это выглядит как одна строка кода, она состоит из трех частей.

Каждая часть отделяется: (двоеточием), который действует как разрыв строки. Это позволяет вам использовать цикл For Next в непосредственном окне для просмотра каждого листа и изменения свойства visible на TRUE (которое показывает любой скрытый лист).

Получить значения переменных

Когда вы начнете создавать сложные коды VBA, вам придется полагаться на переменные для выполнения этой работы.

Переменная — это то, что содержит значение, и это значение может изменяться во время выполнения кода. Вы можете использовать немедленное окно для проверки значений этих переменных.

Ниже приведен простой код, который дает сумму первых 10 положительных целых чисел и показывает результат в ближайшем окне.

Sub AddFirstTenNumbers () Dim Var As Integer Dim i As Integer Dim k As Integer For i = 1 To 10 k = k + i Next i Debug.Print i, k End Sub

Как только вы запустите этот код, вы сразу увидите результат, показанный ниже. Это сразу говорит о том, что код работает нормально и дает ожидаемый результат.

Если это не дает ожидаемых результатов, вы можете отладить код.

Многие люди используют окно сообщения при отладке кода. Хотя он работает нормально, я нахожу его немного навязчивым, поскольку он переносит меня в книгу Excel и показывает окно сообщения. С другой стороны, использование немедленного окна для отладки намного удобнее и позволяет мне оставаться в самом редакторе Visual Basic.

Примечание. Если вы работаете со сложным кодом и у вас есть несколько переменных, которые нужно отслеживать, лучше использовать окно просмотра. Окно просмотра позволяет вам добавить переменную, а затем вы можете увидеть, как эта переменная изменяется в реальном времени (или по мере выполнения кода).

Установить значение переменной при отладке

Это немного продвинутое использование окна Immediate, но если вы его используете, оно может значительно сэкономить время при отладке кода.

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

Например, если у вас есть цикл, который выполняется 10 раз, и вы хотите проверить, что происходит, когда цикл выполняется в 8-й раз, вам не нужно выполнять цикл семь раз, чтобы перейти к восьмым итерациям. Вы можете просто добавить точку останова перед циклом и изменить переменную цикла на 8. Теперь, когда вы запустите код, он покажет вам, что происходит, когда цикл запускается в 8-й раз.

Это становится намного более полезным, когда вы пишете сложные коды и хотите отлаживать определенные циклы.

Предположим, у вас есть код, показанный ниже:

Sub Показать таблицы () For i = 1 To Worksheets.Count Debug.Print Sheets (i). Name Next i End Sub

Приведенный выше код просто перечисляет имена всех листов в книге в непосредственном окне.

Если вы не хотите перечислять имена всех листов, а только листы после 10-го листа, вы можете разместить точку останова во второй строке цикла (чтобы ничего не выполнялось после этой строки), а затем изменить переменная ‘i’ равняется 11.

Чтобы изменить имя переменной в непосредственном окне, введите следующую строку:

я = 11

Это гарантирует, что первые 10 раз цикла будут проигнорированы, а значение вашей переменной будет установлено на 11.

Закрепление / открепление немедленного окна

Вы можете сразу же прикрепить окно к редактору VB — это означает, что оно остается в одном месте в редакторе VB и перемещается и изменяется вместе с ним.

И вы также можете отключить его, что означает, что он не зависит от редактора VB и может быть перемещен как отдельное окно.

Ниже описано, как изменить настройки стыковки для непосредственного окна:

  1. Выберите пункт «Инструменты» в меню редактора VB.
  2. Нажмите «Параметры».
  3. В диалоговом окне «Параметры» щелкните последнюю вкладку — «Стыковка».
  4. Установите флажок «Немедленное окно», чтобы сделать его закрепляемым, и снимите флажок, чтобы его нельзя было закрепить.
  5. Нажмите ОК.

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

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

Немедленное окно не отображается — вот несколько способов его получить

Это могло произойти по нескольким причинам.

Самая распространенная причина, по которой вы не видите окно сразу, — это то, что оно не стало видимым. Он может быть не виден по умолчанию, и чтобы он появился, вам нужно перейти к опции «Просмотр» в меню и выбрать опцию «Немедленное окно». Это сделает его видимым в редакторе VB.

Вы также можете использовать клавиатуру Control + G, чтобы немедленно отобразить окно. Используйте это сочетание клавиш, пока вы находитесь в редакторе VB.

Другая причина, по которой вы можете не видеть это окно, заключается в том, что оно было свернуто и теперь настолько закрыто, что вы не можете его видеть (как указано здесь). Просто сделайте быстрое сканирование и проверьте, не видите ли вы где-то маленький синий / красный квадрат. Вы можете навести на него курсор, и вы увидите возможность изменить его размер.

Если вы вообще не видите непосредственное окно, вот кое-что, что сработало для многих людей (это часто случается из-за изменения разрешения экрана):

  1. Откройте редактор VB
  2. Нажмите Ctrl-G, чтобы переключить фокус на немедленное окно (или выберите опцию View в меню, а затем щелкните на немедленном окне)
  3. Удерживая клавишу ALT, нажмите клавишу пробела. Это покажет раскрывающиеся варианты для немедленного окна.
  4. Нажмите M (для перемещения)
  5. Используйте клавиши со стрелками для перемещения окна
  6. Как только вы выясните, где он находится, увеличьте его

Я получил это на форуме здесь, а также заметил, что то же самое, что предлагается в качестве решения для немедленного окна VBA, не отображается.

Еще одна вещь, которую вы можете попробовать, — это сделать немедленное окно отключаемым (перейдите в Инструменты -> Параметры -> Закрепление и снимите флажок с опции немедленного окна). У некоторых это сработало.

Вам также могут понравиться следующие статьи:

  • Персональная книга макросов Excel | Сохранение и использование макросов во всех книгах
  • Циклы Excel VBA: для «Далее», «Сделать пока», «Сделать до», «Для каждого» (с примерами)
  • Работа с листами с использованием Excel VBA
  • Создание пользовательской функции (UDF) в Excel VBA

  • Окно поиска в Excel

Поле поиска Excel (Содержание)

  • Окно поиска в Excel
  • Как создать окно поиска в Excel
  • Использование окна поиска в Excel

Окно поиска в Excel

Поле поиска, в общих чертах, представляет собой поле или пространство для ввода текста, в котором человек может напечатать запрос и получить результаты. Например, рассмотрим случай поисковой системы, такой как Google. Мы просто набираем текст, который мы ищем, и получаем несколько результатов, из которых мы можем отфильтровать и выбрать соответствующие. Точно так же в листе Excel мы также можем создать окно поиска. Давайте попробуем понять, как мы можем создать окно поиска в Excel, отношение окна поиска к нам и его использование.

Как создать окно поиска в Excel

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

Давайте разберемся, как создать собственное окно поиска в Excel.

Вы можете скачать этот шаблон поиска Box Excel здесь — шаблон поиска Box Excel

Использование окна поиска в Excel

Учтите, что у вас есть данные компании, которая занимается продажей и покупкой подержанных автомобилей. Объем данных может быть огромным, и может быть трудно найти конкретное название модели автомобиля из полных данных. Окно поиска может оказаться полезным инструментом в таком случае и помочь вам выделить значения, которые вы можете искать.

Для начала давайте рассмотрим данные, как показано на скриншоте ниже:

  1. В Excel перейдите в ячейку, в которой вы хотите создать окно поиска. В этом случае мы выбрали G1 в качестве ячейки окна поиска. Вы можете выделить выделенную ячейку, чтобы легко отличить ее от других ячеек.
  2. Теперь выберите весь диапазон данных, из которого вы хотите получить данные или значение для поиска. В нашем случае выбран диапазон A2: D27 (как показано на рисунке ниже)

  1. После того как вы выбрали весь диапазон данных, перейдите к условному форматированию и выберите Новое правило .

  1. В следующем окне выберите параметр « Использовать формулу, чтобы определить ячейки для форматирования» .

После этого введите следующую формулу в текстовое поле под ним.

= ПОИСК ($ G $ 1, $ А2 и В2 $ & $ & $ С2 D2)

  1. После написания приведенной выше формулы в отведенном для этого месте нажмите кнопку « Формат» под ней, чтобы выбрать цвет, в котором будут выделены искомые (и сопоставленные) значения.

Это можно сделать, нажав кнопку Fill в следующем окне и выбрав цвет.

  1. После этого нажмите кнопку ОК, и вы увидите, что все поля на вашем листе теперь выделены выбранным вами цветом. Скриншот того же также приведен ниже.

  1. Теперь вы можете попытаться найти нужное ключевое слово и увидите, что все строки с искомым словом теперь выделены выбранным цветом.

Например, давайте попробуем поискать предмет с именем Scooter . Вы увидите, что все строки со словом scooter были выделены.

Это упрощает процесс поиска любой ценности. Например, теперь, когда поля для Scooter выделены, мы можем просто применить фильтр к цвету и еще больше уточнить результаты поиска. Теперь давайте попробуем понять значение параметров, которые мы использовали в формуле поиска, и то, как это работает для нас в Excel.

Объяснение окна поиска в Excel

Давайте теперь попробуем понять, что означает каждый параметр в формуле поиска в Excel. Рассмотрим формулу, которую мы использовали.

= ПОИСК ($ G $ 1, $ A2 и $ B2 & $ C2 & $ D2)

Давайте посмотрим на каждый параметр в отдельности.

  1. $ G $ 1

= ПОИСК ( $ G $ 1, $ A2 и $ B2 & $ C2 & $ D2)

Этот параметр определяет место, где мы хотим применить правило поиска. Мы можем либо ввести номер ячейки, либо просто щелкнуть ячейку, в которой мы хотим найти поле поиска, после того как мы написали = ПОИСК в окне правила условного форматирования.

2. $ A2 &

= ПОИСК ($ G $ 9, $ A2 и $ B2 & $ C2 & $ D2)

Этот параметр «A» указывает столбец, из которого необходимо искать данные, а «2» указывает начальную позицию. Таким образом, «A2» означает, что мы хотим искать данные в столбце «A», начиная со 2- й строки. Добавление знака « перед «A» гарантирует, что место поиска останется неизменным, даже если мы изменим местоположение окна поиска.

Прикрепление знака «&» после «A2» означает, что мы хотим добавить больше мест, в которых нужно искать данные. Затем мы можем указать все местоположения поиска таким же образом, как мы указали для «A2».

Это можно увидеть в формуле:

= ПОИСК ($ G $ 9, $ A2 и $ B2 & $ C2 & $ D2 )

Пример окна поиска в Excel

К настоящему времени мы смогли выработать четкое понимание того, как реализовать окно поиска в Excel. Теперь давайте посмотрим несколько примеров, где мы можем использовать окно поиска и получить уточненные результаты. Рассмотрим предыдущий пример, в котором мы искали слово «Scooter» в нашем листе Excel, и все поля, содержащие слово «Scooter», были выделены. Теперь, что мы будем делать, если мы хотим увидеть торговые марки скутеров, которые были проданы в 2008 году?

Ну, ответ на этот вопрос довольно прост. Мы можем просто применить файл в поле « Год продажи» . Давайте посмотрим на скриншот ниже.

Мы получаем следующий результат, когда применяем фильтр и нажимаем ОК . Есть 2 марки, скутер которых был продан в 2008 году, как показано ниже.

Вот как окно поиска в Excel может помочь нам упростить процесс поиска.

Мы можем даже использовать фильтры для выполнения поиска, как мы делали выше, но тогда нам нужно будет применить несколько фильтров для поиска нескольких вещей. Кроме того, пример, который мы видели здесь, имел ограниченные данные. Могут быть случаи, когда объем данных, представленных на листе, огромен. Поле поиска может помочь нам во всех таких ситуациях, поскольку оно создает критерий поиска для всего листа.

То, что нужно запомнить

  • Убедитесь, что вы правильно вводите формулу в окне условного форматирования.
  • Используйте знак $, как показано в формуле выше, чтобы убедиться, что нет отклонений.
  • Знак & используется для добавления дополнительных столбцов в формулу. Убедитесь, что вы не ставите знак & в конце формулы.
  • Мы можем использовать фильтр для решения задачи окна поиска в Excel, но нам может потребоваться применить фильтры к нескольким столбцам для решения этой задачи.
  • Хотя и поле поиска, и фильтры используются для извлечения результатов на основе различных условий, мы не должны использовать их взаимозаменяемо, поскольку они решают уникальные задачи и по-разному. Поле поиска в Excel можно использовать для улучшения функции фильтра.

Рекомендуемые статьи

Это было руководство для окна поиска в Excel. Здесь мы обсуждаем, как создать окно поиска в Excel и использование поля поиска в Excel вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. Как использовать функцию поиска в Excel
  2. Условное форматирование в сводной таблице в Excel
  3. Руководство по фильтрации ярлыков в Excel
  4. Полное руководство по расширенному фильтру в Excel

 

aesp

Пользователь

Сообщений: 135
Регистрация: 09.03.2015

Здравствуйте!

Помогите с рабочим кодом, с помощью которого можно получить СПИСОК НАИМЕНОВАНИЙ открытых в данный момент программных ОКОН (окон приложений) и окон документов (вторичных окон). Весь инет «прошерстил» — нет ничего вразумительного. :sceptic:

Благодарю!

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#2

09.11.2017 10:20:31

Что в Вашем понимании «Наименование окна»? То, что написано в заголовке? Или что?

Цитата
aesp написал:
Весь инет «прошерстил» — нет ничего вразумительного

Так поделитесь тем, что нашли и почему оказалось «не тем». Потому как примеров куча, только что проверил, вбив в поисковик «список всех окон vba». Что для Вас является вразумительным?
Вполне неплохо должно все это получиться при помощи API. Но тут уже неясна цель конечная. Получили список окон. Дальше что с ним делать?

И при чем здесь Excel вообще?

P.S. И Вы в курсе, что все окна — это очень большой список, т.к. даже панель задач со всеми прогами там — это тоже все окна? Т.е. по сути это будет диспетчер задач, т.к. Windows не просто так называется именно Windows(окна), а именно потому, что практически любой процесс представляет собой окно…

Изменено: The_Prist09.11.2017 10:38:54

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

aesp

Пользователь

Сообщений: 135
Регистрация: 09.03.2015

#3

09.11.2017 11:25:41

The_Prist, да, в моём понимании «наименование окна» — то, что в заголовке его вижу. Нужны те окна которые я вижу на фоне рабочего стола. Если что-то другое можно отнести к «наименованию окна», то тогда нужен список этих «наименований». Цель «конечная» моя
никому не интересна. А промежуточная — переключиться в нужное окно по его числовому hwnd:

Код
hwnd = FindWindow(vbNullString, "Книга1")
Код
J = SetForegroundWindow(ByVal hwnd)

Этим кодом переключаюсь в окно открытого файла Excel с именем «Книга1», а вот уже в окно файла в общем доступе «Книга1 [Общий]» или «Книга2 [Режим совместимости]» попасть не удаётся… Предполагаю, что «настоящие» имена окон совсем иные, чем вижу в их заголовке.
Вся эта

Цитата
The_Prist написал:
примеров куча

реально не работает, при запуске макросов на их основе. Был бы «профи» — молча бы из кучи создал конфетку.
Да, я в курсе про Windows вообще. ПредлОжите другой способ переключения в нужное окно — спасибо. Только ответ типа «здесь трактор нужен» — не подойдёт.[/SIZE]
Так как всё-таки прийти к пункту:

Цитата
The_Prist написал: Получили список окон.

:)  

Изменено: aesp09.11.2017 13:02:47

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#4

09.11.2017 11:39:43

Цитата
aesp написал:
переключаюсь в окно открытого файла Excel с именем «Книга1»,

— таких окон может быть много, раз уж пошли в дебри API…

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#5

09.11.2017 11:48:41

Цитата
aesp написал:
Только ответ типа «здесь трактор нужен» — не подойдёт.

И что это значит? Какие тракторы, Вы о чем? :)

Цитата
aesp написал:
никому не интересна

Ну тогда сами крутите код ниже, раз считаете, что нам ответы на наши вопросы не интересны:

Код
Option Explicit

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
                        lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Public Const GW_HWNDFIRST = 0
Public Const GW_HWNDNEXT = 2

Sub GetTaskList()
    Dim lw As Long, s As String, CurrWnd As Long
    CurrWnd = GetWindow(Application.hwnd, GW_HWNDFIRST)
    Do While CurrWnd <> 0
        lw = GetWindowTextLength(CurrWnd)
        s = Space(lw + 1)
        lw = GetWindowText(CurrWnd, s, lw + 1)
        If lw > 0 Then
            Debug.Print Trim(s)
        End If
        CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
        DoEvents
    Loop
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

aesp

Пользователь

Сообщений: 135
Регистрация: 09.03.2015

#6

09.11.2017 11:52:17

Цитата
Hugo написал:
таких окон может быть много

Что это значит? Каких таких? Я ТОЧНО и конкретно получаю номер окна файла «Книга1». Нельзя открыть 10 окон с одинаковым именем. Вопрос в том, почему не все окна «отлавливаются» используемым мной способом? Да «пофиг» как эти дебри называются, — есть инструмент? Нельзя получить список окон? — скажите «НЕЛЬЗЯ!»

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#7

09.11.2017 12:04:15

Цитата
aesp написал:
скажите «НЕЛЬЗЯ!»

Код выше. Получайте названия, обращайтесь. Делайте с ним что хотите.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#8

09.11.2017 12:10:37

Цитата
aesp написал:
Нельзя открыть 10 окон с одинаковым именем.

— почему? Раз Вы полезли так глубоко, а не копаете в одном приложении, значит это не просто так, значит приложений может быть много, и в каждом вполне может быть такое окно.
Ну а если приложение всегда одно — так зачем так усложнять? Берите целиком коллекцию Workbooks()

Изменено: Hugo09.11.2017 14:14:02
(конечно же workbooks())

 

aesp

Пользователь

Сообщений: 135
Регистрация: 09.03.2015

#9

09.11.2017 12:23:22

The_Prist,

Цитата
The_Prist написал:
считаете, что нам ответы на наши вопросы не интересны:

да, вроде, на все Ваши вопросы ответил — без обид? Спасибо за код, НО запускаю — и ничего не происходит… где список увидеть? Увижу результат, смогу «прикрутить»  :D  

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#10

09.11.2017 12:36:04

Цитата
aesp написал:
Нельзя получить список окон? — скажите «НЕЛЬЗЯ!»

Почему нельзя?

Можно.

Только вряд ли кто на форуме по Excel занимался подобными вопросами, а те, кто ими занимается, они вряд ли ходят на форумы по Excel. Задайте вопрос в соответствующей ветке

WIN API

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#11

09.11.2017 12:44:20

Цитата
aesp написал:
где список увидеть?

а где ответ на этот вопрос?

Цитата
The_Prist написал:
Получили список окон. Дальше что с ним делать?

Ответа не получил, поэтому вывел там, где удобно мне — в окно Immediate(Ctrl + G из редактора VBA).

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

aesp

Пользователь

Сообщений: 135
Регистрация: 09.03.2015

#12

09.11.2017 13:01:22

Цитата
The_Prist написал:
Получили список окон. Дальше что с ним делать?

— Увижу (наверное ;) ) нужное наименование, подставлю в конструкцию из сообщения #3 и получу конкретный номер (hwnd) окна.. Как вывести список поверх всех окон?

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#13

09.11.2017 13:11:21

Цитата
aesp написал:
Как вывести список поверх всех окон?

Поверх каких окон? Список вроде получили. А где же обещанное:

Цитата
aesp написал:
Увижу результат, смогу «прикрутить»

:)
Список выводите куда хотите: хоть на форму, хоть в блокнот, хоть на лету чего-то там определяйте. Я целей Ваших не знаю, ответов на вопросы получаем тоже минимум. Поэтому дерзайте! Все, что необходимо для работы с открытыми окнами, вроде есть.
За вывод каждого названия отвечает строка:

Код
Debug.Print Trim(s)

мониторьте, сверяйте, ищите. И начните уже VBA изучать. Раз в API полезли, уж работу по пошаговой отладке кодов должны знать.

Изменено: The_Prist09.11.2017 13:14:45

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

aesp

Пользователь

Сообщений: 135
Регистрация: 09.03.2015

The_Prist, не сердитесь так! Всё на свете изучить не получается! :D
Я Вам очень признателен, Вы здорово мне помогли! Я получил, что искал. Благодарю!

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#15

09.11.2017 13:43:52

Цитата
aesp написал:
не сердитесь так

я не сержусь. Но и не призываю учить все. Но отладку кодов обязан уметь делать каждый, кто лезет в программирование. Без этого никак. Может как-то поможет быстрее понять это:

Отлов ошибок и отладка кода VBA

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

abduvs77

Пользователь

Сообщений: 291
Регистрация: 16.06.2012

Офис-2013, Win.7 max

#16

09.11.2017 20:47:00

Цитата
The_Prist написал:
Отлов ошибок и отладка кода VBA

Спасибо Вам уважаемый The_Prist, Многому научился.

 

Мультипликатор

Пользователь

Сообщений: 329
Регистрация: 28.07.2009

#17

01.08.2019 10:51:16

Добрый день.
Скажите, пожалуйста, а как в указанном в посте #5 коде получить ссылку окна, ведь, чтобы дальше работать с полученным окном нужна ссылка.
Заменил в коде

Код
    If lw > 0 Then       
        Debug.Print Trim(s)
    End If

под свои нужды для поиска ИЕ, чтобы дальше работать с ними:

Код
       If lw > 0 Then
            If Trim(s) Like "*Windows Internet Explorer*" Then
                MsgBox Trim(s) 'Открытые окна
            End If
        End If

Но выдает имена окон. А как дальше получить доступ к ИЕ?
Обычно я получаю доступ к ИЕ так:

Код
        On Error Resume Next
        Set IE = CreateObject("InternetExplorer.Application")
        IE.Visible = True 'False '
        URL = "https://xxxxxxxxxxxt"
        IE.Navigate (URL): Do Until IE.ReadyState = 4: DoEvents: Loop

А дальше уже делаю что мне необходимо.
Для получения такого доступа мне нужна ссылка открытого окна. Как ее получить в указанном коде?
Или, для указанного кода можно получить доступ по другому?

Изменено: Мультипликатор01.08.2019 11:50:33

 

Игорь

Пользователь

Сообщений: 3631
Регистрация: 23.12.2012

 

Спасибо, Игорь. Но не работает почему-то.
Библиотеку Microsoft Internet Controls подключил.
Debug.Print заменил на Msgbox
Показывает адреса двух открытых папок Проводника, хотя открыто было три папки, а ИнтернетЭксплорер открытый не нашел…
Так что не работает…

 

Игорь

Пользователь

Сообщений: 3631
Регистрация: 23.12.2012

А вы уверены, что у вас открыт именно Internet Explorer, а не Microsoft Edge?
Мой код проверен на множестве компов, всё везде работает
(а то, что папки проводника тоже отображаются, — так и должно быть)

 

Мультипликатор

Пользователь

Сообщений: 329
Регистрация: 28.07.2009

#21

02.08.2019 09:43:37

Цитата
Игорь написал:
А вы уверены, что у вас открыт именно Internet Explorer, а не Microsoft Edge?

Да, Игорь, абсолютно уверен. Макросами я работаю только с Internet Explorer. Из браузеров на компе установлен только Хром.
И еще я вспомнил, что я уже находил ваш код где-то полгода назад и он также показывал только Папки проводника, поэтому я его «забраковал».
Но тогда я отказался от этой идеи — искать открытые папки. И вот натолкнулся на код, который привел

The_Prist

.
Он работает, все имена выдает, но мне нужно работать с полученным окном дальше, т.е. читать, вносить, сохранять и т.д.
Для этого я должен как-то к нему обратиться, чтобы найти таблицы, input’ы, кнопки.
А вот этого я не знаю как сделать.  

 

Мультипликатор

Пользователь

Сообщений: 329
Регистрация: 28.07.2009

#22

02.08.2019 10:43:48

Цитата
Игорь написал:
Мой код проверен на множестве компов, всё везде работает

Игорь, прошу прощения.
Все работает, просто нужно было перезагрузить комп.
Видать, что-то глюкануло на компе.
Спасибо большое.

 

Мультипликатор

Пользователь

Сообщений: 329
Регистрация: 28.07.2009

#23

02.08.2019 13:40:00

Цитата
Мультипликатор написал:
Все работает, просто нужно было перезагрузить комп.Видать, что-то глюкануло на компе.

Нет, Игорь, что-то тут не так. Я подставил в код вместо URL$ = «*excelvba.ru*» URL$ = «*.ru*». После перезагрузки один раз сработало и я поспешил извиниться.
Но последующие разы снова стало все повторяться. Я не знаю, в чем может быть дело. Может быть, что-то не обнулено, хотя не вижу что. И опять стали появляться адреса открытых папок Проводника. После перезагрузки компа код четко выдал мне именно все открытые вкладки ИЕ, окон проводника не было.
А теперь снова.

 

Мультипликатор

Пользователь

Сообщений: 329
Регистрация: 28.07.2009

#24

02.08.2019 14:59:45

Прилагаю файл, в котором и сам макрос и результаты его работы выведены на лист, а также скриншот панели задач вставил прямо в файл Екселя.
По нему видно, что у меня открыто три окна ИЕ и семь окон проводника.
Однако результат: окон ИЕ не найдено, а окон проводника только шесть.
В чем же проблема? Мне кажется, что использование кода каким-то образом оставляет какие-то следы и повторное использование макроса приводит к ошибкам, но они не выявляются VBA. Этот же код не может быть одноразовым…
Что не так?

Прикрепленные файлы

  • Переборка всех открытых окон на компе-1.xlsm (103.01 КБ)

За исключением использования функции «Найти» в Excel, на самом деле вы можете создать собственное поле поиска для простого поиска необходимых значений. Эта статья подробно расскажет вам о двух методах создания собственного поля поиска в Excel.

Создайте собственное поле поиска с условным форматированием, чтобы выделить все результаты поиска
Создайте собственное окно поиска с формулами для вывода всех результатов поиска


Создайте собственное поле поиска с условным форматированием, чтобы выделить все результаты поиска

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

1. Выберите диапазон с данными, которые вам нужны для поиска в поле поиска, затем нажмите Условное форматирование > Новое правило под Главная таб. Смотрите скриншот:

2. в Новое правило форматирования диалоговое окно, вам необходимо:

2.1) Выбрать Используйте формулу, чтобы определить, какие ячейки следует форматировать. вариант в Выберите тип правила коробка;

2.2) Введите формулу = ISNUMBER (ПОИСК ($ B $ 2; A5)) в Формат значений, где эта формула истинна коробка;

2.3) Нажмите Формат кнопка, чтобы указать выделенный цвет для искомого значения;

2.4) Нажмите OK кнопку.

Заметки:

1. В формуле $ B $ 2 — это пустая ячейка, которую необходимо использовать в качестве поля поиска, а A5 — это первая ячейка выбранного диапазона, в котором необходимо искать значения. Пожалуйста, измените их по своему усмотрению.

2. В формуле не учитывается регистр.

Теперь поле поиска создано: при вводе критериев поиска в поле поиска B2 и нажатии клавиши Enter выполняется поиск всех совпадающих значений в указанном диапазоне, которые немедленно выделяются, как показано ниже.


Создайте собственное окно поиска с формулами для вывода всех результатов поиска

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

1. Выберите пустую ячейку, которая находится рядом с ячейкой E4, здесь я выбираю ячейку D4, затем вводю формулу = ЕСЛИОШИБКА (ПОИСК ($ B $ 2; E4) + СТРОКА () / 100000; «») в строку формул, а затем нажмите Enter ключ. Смотрите скриншот:

Внимание: В формуле $ B $ 2 — это ячейка, которую необходимо использовать в качестве поля поиска, E4 — это первая ячейка списка данных, в котором необходимо выполнить поиск. Вы можете менять их по своему усмотрению.

2. Продолжайте выбирать ячейку E4, затем перетащите маркер заполнения вниз в ячейку D23. Смотрите скриншот:

3. Теперь выберите ячейку C4 и введите формулу. = ЕСЛИОШИБКА (РАНГ (D4; $ D $ 4: $ D $ 23,1); «») в панель формул и нажмите Enter ключ. Выберите ячейку C4, затем перетащите маркер заполнения до C23. Смотрите скриншот:

4. Теперь вам нужно заполнить диапазон A4: A23 порядковым номером, который увеличивается на 1 от 1 до 20, как показано на скриншоте ниже:

5. Выберите пустую ячейку, в которой будет отображаться результат поиска, введите формулу. = ЕСЛИОШИБКА (ВПР (A4; $ C $ 4: $ E $ 23,3; FALSE); «») в панель формул и нажмите Enter ключ. Продолжая выбирать ячейку B4, перетащите маркер заливки вниз до B23, как показано ниже.

С этого момента при вводе данных в поле поиска B2 все совпавшие значения будут перечислены в диапазоне B4: B23, как показано на скриншоте ниже.

Внимание: этот метод не чувствителен к регистру.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

За исключением использования функции «Найти» в Excel, на самом деле вы можете создать собственное поле поиска для простого поиска необходимых значений. В этой статье будут подробно описаны два метода создания собственного окна поиска в Excel.

Создайте собственное окно поиска с условным форматированием, чтобы выделить все результаты поиска
Создайте собственное окно поиска с формулами для вывода всех результатов поиска.

Простой поиск (поиск и замена) текстов во всех открытых книгах или определенных рабочих листах

Расширенный поиск и Заменить функцию Kutools for Excel может помочь вам легко искать или находить и заменять определенный контент во всех открытых книгах, а также в нескольких указанных книгах. Загрузите полную 60-дневную бесплатную версию Kutools for Excel прямо сейчас!

Kutools for Excel : с более чем 200 удобными надстройками Excel, бесплатно, без ограничений в течение 60 дней. Загрузите бесплатную пробную версию прямо сейчас!

Вкладка Office Включите редактирование и просмотр с вкладками в Office и сделайте вашу работу намного проще …

Подробнее … Скачать бесплатно …

Kutools for Excel Решает Большинство ваших проблем и увеличивает вашу продуктивность на 80%.

  • Повторное использование чего угодно: добавьте наиболее часто используемые или сложные формулы, диаграммы и все остальное в избранное, и быстро использовать их в будущем.
  • Более 20 текстовых функций: извлечение числа из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
  • Инструменты слияния: несколько книг и листов в одну; Объединить несколько ячеек/строк/столбцов без потери данных; Объедините повторяющиеся строки и суммируйте.
  • Инструменты разделения: разделение данных на несколько листов в зависимости от значения; Из одной книги в несколько файлов Excel, PDF или CSV; Один столбец в несколько столбцов.
  • Вставить пропуск скрытых/отфильтрованных строк; Подсчет и сумма по цвету фона; Массовая отправка персонализированных писем нескольким получателям.
  • Суперфильтр: создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделе, дню, частоте и т. Д. Фильтр жирным шрифтом, формулами, комментарием …
  • Более 300 мощных функций; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.

Подробнее … Бесплатная загрузка …

->


Создайте собственное окно поиска с условным форматированием, чтобы выделить все результаты поиска

Потрясающе! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Сэкономьте 50% времени и сокращайте тысячи щелчков мыши каждый день!

->

Чтобы создать свой собственное поле поиска с помощью функции условного форматирования в Excel.

1. Выберите диапазон с данными, которые вам нужны для поиска, с помощью поля поиска, затем нажмите Условное форматирование > Новое правило на вкладке Главная . См. снимок экрана:

2. В диалоговом окне Новое правило форматирования вам необходимо:

2.1) Выберите Используйте формулу, чтобы определить, какие ячейки следует форматировать , параметр в поле Выбрать тип правила ;

2.2) Введите формулу = ЕЧИСЛО (ПОИСК ($ B $ 2, A5)) в поле Формат значений, где эта формула верна ;

2.3) Нажмите Форматировать , чтобы указать выделенный цвет для искомого значения;

2.4) Нажмите кнопку OK .

Примечания :

1. В формуле $ B $ 2 – это пустая ячейка, которую необходимо использовать в качестве поля поиска, а A5 – это первая ячейка выбранного диапазона, в котором необходимо искать значения. Пожалуйста, измените их по своему усмотрению.

2. В формуле не учитывается регистр.

Теперь поле поиска создано, при вводе критериев поиска в поле поиска B2 и нажатии клавиши Enter выполняется поиск всех совпадающих значений в указанном диапазоне и сразу выделяется, как показано на скриншоте ниже.


Создайте собственное окно поиска с формулами для перечисления всех результатов поиска

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

1. Выберите пустую ячейку, которая находится рядом с ячейкой E4, здесь я выберу ячейку D4, затем введите формулу = ЕСЛИ ОШИБКА (ПОИСК ($ B $ 2, E4) + СТРОКА ()/100000, “”) в строку формул, а затем нажмите Enter . См. Снимок экрана:

Примечание : в формуле $ B $ 2 – это ячейка, которую необходимо использовать в качестве поля поиска, E4 – это первая ячейка списка данных, в котором необходимо выполнить поиск. Вы можете изменить их по своему усмотрению.

2. Продолжайте выбирать ячейку E4, затем перетащите маркер заполнения вниз в ячейку D23. См. Снимок экрана:

3. Теперь выберите ячейку C4, введите формулу = ЕСЛИОШИБКА (RANK (D4, $ D $ 4: $ D $ 23,1), “”) в панель формул и нажмите клавишу Enter . Выберите ячейку C4, затем перетащите маркер заполнения до C23.. См. Снимок экрана:

4. Теперь вам нужно заполнить диапазон A4: A23 порядковым номером, который увеличивается на 1 от 1 до 20, как показано на скриншоте ниже:

5. Выберите пустую ячейку, необходимую для отображения результатов поиска, введите формулу = ЕСЛИОШИБКА (ВПР (A4, $ C $ 4: $ E $ 23,3, FALSE), “”) в панель формул и нажмите Enter ключ. Продолжая выбирать ячейку B4, перетащите маркер заливки вниз до B23, как показано на скриншоте ниже.

С этого момента при вводе данных в поле поиска B2 все совпавшие значения будут перечислены в диапазоне B4: B23, как показано на скриншоте ниже.

: этот метод не чувствителен к регистру.

Вкладка Office – Просмотр, редактирование и управление книгами в Excel с вкладками:

Вкладка Office предоставляет интерфейс с вкладками, как в веб-браузерах, таких как Google Chrome, новые версии Internet Explorer и Firefox в Microsoft Excel. Он станет незаменимым помощником в работе и сэкономит время. См. Демонстрацию ниже:

Нажмите, чтобы получить бесплатную пробную версию вкладки Office!

->


Like this post? Please share to your friends:
  • Как найти одно слово в тексте word
  • Как найти одно слово в тексте excel
  • Как найти одинаковые слова в excel в разных столбцах
  • Как найти одно слово в microsoft word необходимо
  • Как найти одинаковые позиции в excel в столбце