Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выделить нужную книгу. - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделить нужную книгу. (Макросы/Sub)
Выделить нужную книгу.
Roman777 Дата: Пятница, 04.09.2015, 12:49 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Подскажите, пожалуйста, вот с помощью следующего кода, я ВПРю данные:

Запускаю из той книги, в которой у меня есть "Идетификатор" и куда мне нужно по нему получить данные из таблицы (в другой книге).
Далее выбираю файл с данными, откуда я переношу информацию в свой файл, выделяю там диапазон от столбца-идетификатора до столбца искомой информации.
В общем, хочу, чтобы после отработки кода, выделялась книга, из которой я его запустил. А у меня получается остаётся выделенной книга, в которой я выделял столбцы последними.


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день!
Подскажите, пожалуйста, вот с помощью следующего кода, я ВПРю данные:

Запускаю из той книги, в которой у меня есть "Идетификатор" и куда мне нужно по нему получить данные из таблицы (в другой книге).
Далее выбираю файл с данными, откуда я переношу информацию в свой файл, выделяю там диапазон от столбца-идетификатора до столбца искомой информации.
В общем, хочу, чтобы после отработки кода, выделялась книга, из которой я его запустил. А у меня получается остаётся выделенной книга, в которой я выделял столбцы последними.

Автор - Roman777
Дата добавления - 04.09.2015 в 12:49
Manyasha Дата: Пятница, 04.09.2015, 13:03 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Roman777, здравствуйте. Добавьте в макрос первую строчку[vba]
Код
Set wb = ActiveWorkbook
[/vba]а последней
[vba]
Код
wb.Activate
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеRoman777, здравствуйте. Добавьте в макрос первую строчку[vba]
Код
Set wb = ActiveWorkbook
[/vba]а последней
[vba]
Код
wb.Activate
[/vba]

Автор - Manyasha
Дата добавления - 04.09.2015 в 13:03
Roman777 Дата: Пятница, 04.09.2015, 13:11 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, пробую. Когда выскакивает окошко
[vba]
Код
Udalit = Application.InputBox("Необходимо ли модифицировать Идентификатор (удалять служебные символы)" _
& Chr(13) & "Оставьте как есть, если надо или измените (на что угодно)", "Удаление Идентификатора", "1")
[/vba]
нажимаю "ОК" выделяется кратковременно нужная книга, но когда отпускаю кнопку "ОК", почему-то обратно возвращает на книгу с данными, а не на ту что мне нужно.


Много чего не знаю!!!!
 
Ответить
СообщениеManyasha, пробую. Когда выскакивает окошко
[vba]
Код
Udalit = Application.InputBox("Необходимо ли модифицировать Идентификатор (удалять служебные символы)" _
& Chr(13) & "Оставьте как есть, если надо или измените (на что угодно)", "Удаление Идентификатора", "1")
[/vba]
нажимаю "ОК" выделяется кратковременно нужная книга, но когда отпускаю кнопку "ОК", почему-то обратно возвращает на книгу с данными, а не на ту что мне нужно.

Автор - Roman777
Дата добавления - 04.09.2015 в 13:11
Manyasha Дата: Пятница, 04.09.2015, 13:41 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Проглядела, у Вас уже есть
[vba]
Код
Set ActWB = ActiveWorkbook
...
Application.Windows(ActWB.name).Activate
[/vba]
У меня остается активной та книга, из которой я запустила макрос.
Неважно, гда я выбираю данные, хоть во все инпуты пихаю разные источники, все равно потом активируется книга, где я запустила макрос.
У Вас не так или я чего-то не поняла?


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеПроглядела, у Вас уже есть
[vba]
Код
Set ActWB = ActiveWorkbook
...
Application.Windows(ActWB.name).Activate
[/vba]
У меня остается активной та книга, из которой я запустила макрос.
Неважно, гда я выбираю данные, хоть во все инпуты пихаю разные источники, все равно потом активируется книга, где я запустила макрос.
У Вас не так или я чего-то не поняла?

Автор - Manyasha
Дата добавления - 04.09.2015 в 13:41
Roman777 Дата: Пятница, 04.09.2015, 13:59 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, я правильно понял, что у Вас и без изменений, мой макрос отработал так как вы описали?
У меня и в моём макросе, и с изменениями, как вы предлагали, всегда после отрабатывания макроса, активным окно остаётся именно второго файла, не из которого я запускаю(


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.09.2015, 14:00
 
Ответить
СообщениеManyasha, я правильно понял, что у Вас и без изменений, мой макрос отработал так как вы описали?
У меня и в моём макросе, и с изменениями, как вы предлагали, всегда после отрабатывания макроса, активным окно остаётся именно второго файла, не из которого я запускаю(

Автор - Roman777
Дата добавления - 04.09.2015 в 13:59
nilem Дата: Пятница, 04.09.2015, 14:21 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
чтобы после отработки кода, выделялась книга, из которой я его запустил

[vba]
Код
thisworkbook.activate
[/vba]
попробуйте


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
чтобы после отработки кода, выделялась книга, из которой я его запустил

[vba]
Код
thisworkbook.activate
[/vba]
попробуйте

Автор - nilem
Дата добавления - 04.09.2015 в 14:21
Roman777 Дата: Пятница, 04.09.2015, 14:23 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
nilem, тоже самое, после отработки, остаётся активным окно книги второй, не той из которой я запускаю макрос.
Да и я подставил в конце кода:
[vba]
Код

MsgBox (ThisWorkbook.name)
[/vba]
Он выдаёт имя личной книги макросов (именно там у меня макрос и лежит).


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.09.2015, 14:27
 
Ответить
Сообщениеnilem, тоже самое, после отработки, остаётся активным окно книги второй, не той из которой я запускаю макрос.
Да и я подставил в конце кода:
[vba]
Код

MsgBox (ThisWorkbook.name)
[/vba]
Он выдаёт имя личной книги макросов (именно там у меня макрос и лежит).

Автор - Roman777
Дата добавления - 04.09.2015 в 14:23
SLAVICK Дата: Пятница, 04.09.2015, 14:25 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Попробуйте:
[vba]
Код
Artikul.Parent.Parent.Activate
[/vba]
или
[vba]
Код
ActWB.Activate
[/vba]
Хотя у меня и с Вашим кодом активируется 1-я книга.

ЗЫ
попробуйте еще перед активацией книги прописать:
[vba]
Код
DoEvents
[/vba]


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 04.09.2015, 14:28
 
Ответить
СообщениеПопробуйте:
[vba]
Код
Artikul.Parent.Parent.Activate
[/vba]
или
[vba]
Код
ActWB.Activate
[/vba]
Хотя у меня и с Вашим кодом активируется 1-я книга.

ЗЫ
попробуйте еще перед активацией книги прописать:
[vba]
Код
DoEvents
[/vba]

Автор - SLAVICK
Дата добавления - 04.09.2015 в 14:25
Manyasha Дата: Пятница, 04.09.2015, 14:30 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
без изменений, мой макрос отработал

Да
Может у Вас есть еще какие-то макросы, например на изменение листа, и там активируется другая книга?
Попробуйте поставить брэйкпоинт на последнюю строчку макроса, активируется нужная книга?
Если да, то дальше по f8 пройдитесь, что будет происходить? На каком моменте активируется "ненужная" книга?


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
без изменений, мой макрос отработал

Да
Может у Вас есть еще какие-то макросы, например на изменение листа, и там активируется другая книга?
Попробуйте поставить брэйкпоинт на последнюю строчку макроса, активируется нужная книга?
Если да, то дальше по f8 пройдитесь, что будет происходить? На каком моменте активируется "ненужная" книга?

Автор - Manyasha
Дата добавления - 04.09.2015 в 14:30
Roman777 Дата: Пятница, 04.09.2015, 14:33 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SLAVICK, к сожалению аналогично, причём и Ваше предложение, и предложение Manyasha, и мой изначальный вариант все они при
[vba]
Код
msgbox(....name)
[/vba]
выдают имя той книги которую я и хочу активировать, не пойму, почему же не происходит этой активации


Много чего не знаю!!!!
 
Ответить
СообщениеSLAVICK, к сожалению аналогично, причём и Ваше предложение, и предложение Manyasha, и мой изначальный вариант все они при
[vba]
Код
msgbox(....name)
[/vba]
выдают имя той книги которую я и хочу активировать, не пойму, почему же не происходит этой активации

Автор - Roman777
Дата добавления - 04.09.2015 в 14:33
Manyasha Дата: Пятница, 04.09.2015, 14:41 | Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Если я права, и это связано с обработкой событий книг/листов, то пропишите 1-й строчкой макроса:
[vba]
Код
Application.EnableEvents = False
[/vba]
и последней
[vba]
Код
Application.EnableEvents = True
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеЕсли я права, и это связано с обработкой событий книг/листов, то пропишите 1-й строчкой макроса:
[vba]
Код
Application.EnableEvents = False
[/vba]
и последней
[vba]
Код
Application.EnableEvents = True
[/vba]

Автор - Manyasha
Дата добавления - 04.09.2015 в 14:41
Roman777 Дата: Пятница, 04.09.2015, 14:57 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, к сожалению проблема остаётся...
вставил так:


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.09.2015, 15:05
 
Ответить
СообщениеManyasha, к сожалению проблема остаётся...
вставил так:

Автор - Roman777
Дата добавления - 04.09.2015 в 14:57
Roman777 Дата: Пятница, 04.09.2015, 15:08 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Создал простой проверочный код:
[vba]
Код
Sub Proverka()
     Dim A As Range
     Dim B As Range
     Application.EnableEvents = False
    Set A = Application.InputBox("A", "A-A", Type:=8)
    Set B = Application.InputBox("B", "B-B", Type:=8)
    MsgBox (A.Parent.Parent.name)
    MsgBox (B.Parent.Parent.name)
    A.Parent.Parent.Activate
    Application.EnableEvents = True
End Sub
[/vba]
Точно так же не отрабатывает... активным остаётся вторая книга, не из которой был запущен макрос (запускаю макрос, выбираю любую ячейку книги, из которого запустил макрос, далее перехожу во вторую книгу и там выделяю тоже любую ячейку, после отрабатывания кода, активным остаётся окно второй книги, хотя сообщения msgbox верно выводят информацию)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.09.2015, 15:08
 
Ответить
СообщениеСоздал простой проверочный код:
[vba]
Код
Sub Proverka()
     Dim A As Range
     Dim B As Range
     Application.EnableEvents = False
    Set A = Application.InputBox("A", "A-A", Type:=8)
    Set B = Application.InputBox("B", "B-B", Type:=8)
    MsgBox (A.Parent.Parent.name)
    MsgBox (B.Parent.Parent.name)
    A.Parent.Parent.Activate
    Application.EnableEvents = True
End Sub
[/vba]
Точно так же не отрабатывает... активным остаётся вторая книга, не из которой был запущен макрос (запускаю макрос, выбираю любую ячейку книги, из которого запустил макрос, далее перехожу во вторую книгу и там выделяю тоже любую ячейку, после отрабатывания кода, активным остаётся окно второй книги, хотя сообщения msgbox верно выводят информацию)

Автор - Roman777
Дата добавления - 04.09.2015 в 15:08
Manyasha Дата: Пятница, 04.09.2015, 15:08 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
А что на счет
по f8 пройдитесь

Пробовали?


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеА что на счет
по f8 пройдитесь

Пробовали?

Автор - Manyasha
Дата добавления - 04.09.2015 в 15:08
Roman777 Дата: Пятница, 04.09.2015, 15:12 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, не пойму... вот упрощённый код из 13 сообщения при обычном запуске не оставляет активным книгу из которой инициирую макрос, а когда F8 прошёлся, то отработал всё как надо ...
кроме того, мой изначальный макрос (ВПР) таким методом тоже отработал как надо...


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.09.2015, 15:16
 
Ответить
СообщениеManyasha, не пойму... вот упрощённый код из 13 сообщения при обычном запуске не оставляет активным книгу из которой инициирую макрос, а когда F8 прошёлся, то отработал всё как надо ...
кроме того, мой изначальный макрос (ВПР) таким методом тоже отработал как надо...

Автор - Roman777
Дата добавления - 04.09.2015 в 15:12
Manyasha Дата: Пятница, 04.09.2015, 16:04 | Сообщение № 16
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Roman777, файл можете сюда выложить?

А если скопировать этот макрос в новую книгу и закрыть personal, как макрос отработает?
(2-я книга, к которой обращаетесь пусть тоже новая будет)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеRoman777, файл можете сюда выложить?

А если скопировать этот макрос в новую книгу и закрыть personal, как макрос отработает?
(2-я книга, к которой обращаетесь пусть тоже новая будет)

Автор - Manyasha
Дата добавления - 04.09.2015 в 16:04
nilem Дата: Пятница, 04.09.2015, 16:06 | Сообщение № 17
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
специально создал две книги, попробовал упрощенный макрос. Все работает, активируется Книга2


работает в том числе с Персонал
А как нужно?

или так попробуйте


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Пятница, 04.09.2015, 16:13
 
Ответить
Сообщениеспециально создал две книги, попробовал упрощенный макрос. Все работает, активируется Книга2


работает в том числе с Персонал
А как нужно?

или так попробуйте

Автор - nilem
Дата добавления - 04.09.2015 в 16:06
Roman777 Дата: Пятница, 04.09.2015, 16:14 | Сообщение № 18
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
nilem, так и нужно, макрос отрабатывая, должен активировать окно книги той из которой был запущен. Я пока не понял в чём проблема, но у меня во всех перечисленных тут случаях активным остаётся вторая книга, которую в процессе выскакивания сообщения "Set B = Application.InputBox("B", "B-B", Type:=8)" я выбираю, чтобы указать область. Если перехожу в пошаговый режим и с помощью "F8" отрабатываю макрос, он делает всё и на последнем шаге "A.Parent.Parent.Activate" активирует окно той книги из которой был запущен. Получается при обычном запуске макроса, он словно бы даже не видит A.Parent.Parent.Activate, а когда жамкаю "F8" всё чётко...


Много чего не знаю!!!!
 
Ответить
Сообщениеnilem, так и нужно, макрос отрабатывая, должен активировать окно книги той из которой был запущен. Я пока не понял в чём проблема, но у меня во всех перечисленных тут случаях активным остаётся вторая книга, которую в процессе выскакивания сообщения "Set B = Application.InputBox("B", "B-B", Type:=8)" я выбираю, чтобы указать область. Если перехожу в пошаговый режим и с помощью "F8" отрабатываю макрос, он делает всё и на последнем шаге "A.Parent.Parent.Activate" активирует окно той книги из которой был запущен. Получается при обычном запуске макроса, он словно бы даже не видит A.Parent.Parent.Activate, а когда жамкаю "F8" всё чётко...

Автор - Roman777
Дата добавления - 04.09.2015 в 16:14
Roman777 Дата: Пятница, 04.09.2015, 16:20 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
nilem, Ваши оба макроса сработали и при обычном запуске, я пока не понял что-то принципиальной разницы с остальными...
разница в том, что у Вас прописана автоматическая активация другой книги после выбора области в первой?
Всё же разница не велика, почему же тогда этот макрос не работает в обычном запуске как надо?


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.09.2015, 16:24
 
Ответить
Сообщениеnilem, Ваши оба макроса сработали и при обычном запуске, я пока не понял что-то принципиальной разницы с остальными...
разница в том, что у Вас прописана автоматическая активация другой книги после выбора области в первой?
Всё же разница не велика, почему же тогда этот макрос не работает в обычном запуске как надо?

Автор - Roman777
Дата добавления - 04.09.2015 в 16:20
SLAVICK Дата: Пятница, 04.09.2015, 16:34 | Сообщение № 20
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Попробуйте этот код - я добавил процедуру выбора другой книги со списка...

Странно - с этой процедурой - потом возвращается в 1-ю книгу без нее - нет %)
Наверно это очередной баг 2013-го офиса :)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеПопробуйте этот код - я добавил процедуру выбора другой книги со списка...

Странно - с этой процедурой - потом возвращается в 1-ю книгу без нее - нет %)
Наверно это очередной баг 2013-го офиса :)

Автор - SLAVICK
Дата добавления - 04.09.2015 в 16:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделить нужную книгу. (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!