Страницы: 1
RSS
VBA: В процессе выполнения макроса выбрать мышью активное окно (книгу)
 
Добрый день!
Банальная вроде вещь, а потратил кучу времени и не нашел ничего.
Есть файл1 с макросом (кроме макроса ничего не имеет), есть также другие открытые файлы. После запуска макроса из файл1 надо выбрать(указать мышью, сделать активным) один из открытых файлов, к которому после этого будет применен макрос. Имена других открытых файлов и где хранятся не известно.
В какую сторону смотреть?
 
Мне думается, что нужно создать что-то типа ListBox (TextBox) в который будут собираться имена открытых файлов. Есть что-то их объединяющее, например, расширение? Но я с такими проблемами не сталкивался и это всего лишь моё предположение. Сейчас, к сожалению, времени мало, попробуйте что-нибудь подобное в Нете поискать, а м.б. более знающие люди помогут.
Удачи!
 
Код в Книге2
Код
Sub www()
Workbooks("Книга1").Activate
End Sub
 
Извините, создается впечатление что Вы не удосужились прочесть вопрос.
 
Цитата
jfd пишет:
создается впечатление что Вы не удосужились прочесть вопрос.
Это почему? Вместо "Книга1" подставляем выбранное значение из Лист/КомбоБокса, как предлагалось выше.
 
все открытые файлы Excel
Код
Sub ListAll()
    Dim wb As Workbook
    For Each wb In Workbooks
        MsgBox wb.Name
    Next
End Sub
Учимся сами и помогаем другим...
 
Юрий М, потому что этот способ очевиден и предполагает знание названия файла нужной книги.
А кроме получения списка всех открытых фалов и выбора из него одного, других способов нет?
 
Я бы сделал немодальную форму (похожую на msgbox) с текстом "Выберите одну из открытых книг Excel, и нажмите ОК." и одной кнопкой ОК. По кнопке взяли имя активной книги и продолжайте свой макрос.
 
А как Excel должен догадаться КАКУЮ именно из открытых книг нужно активировать?
 
Цитата
Sergei_A пишет:
Я бы сделал немодальную форму (похожую на msgbox) с текстом " Выберите одну из открытых книг Excel, и нажмите ОК. " и одной кнопкой ОК. По кнопке взяли имя активной книги и продолжайте свой макрос.
Спасибо.
КАк все далеко зашло однако. А я думал ограничится паузой (например вызовом Inputboxa) в выполнении макроса и открытием другой книги, но не дает открыть другую книгу
 
Цитата
А как Excel должен догадаться КАКУЮ именно из открытых книг нужно активировать?
Пауза в выполнении макроса во время которой мышью тыкается нужная книга и она становится активной, все действия макроса идут в активной книге. Если так конечно возможно.
 
В коде макросе если указать ActiveWorkbook.ActiveSheet.range... то код как раз будет выполняться в выбранной книге (хотя вроде как это по умолчанию)
Учимся сами и помогаем другим...
 
Создайте форму со свойством ShowModal=False, надписью "Выберите книгу" и кнопкой. В коде кнопки напишите
Код
Private Sub CommandButton1_Click()
Unload Me
MainMacro
End Sub

, где MainMacro - макрос, который работает с активной книгой.
Форма запускается стартовым макросом из одной команды
Код
UserForm1.Show
 
Попробуйте тогда .Wait
А Application.InputBox не пробовали?
 
Нашел что Wait — это метод позволяет приостановить работу Excel на указанное вами время, сняв нагрузку с процессора. Используется для демонстраций — чтобы пользователь успел увидеть, что происходит, для ожидания завершения выполнения какой-либо внешней операции и т.п. При этом ввод пользователя блокируется, а указатель мыши приобретает вид песочных часов. К сожалению. А Application.InputBox позволяет осуществлять выбор диапазона мышью только на той книге на которой он был запущен. Причем мышью можно выбрать только если не установлен запрет на Application.ScreenUpdating, как то долго не мог понять почему не работает выбор мышью, когда в другом макросе все было хорошо. )
Изменено: jfd - 06.03.2013 22:00:47
 
Цитата
jfd пишет:
КАк все далеко зашло однако.
Я не понял о чем это Вы.
 
Хотел малой кровью отделаться. Спасибо за пример.
 
Казанский,
Спасибо, так и сделал.
Страницы: 1
Читают тему
Наверх