Страница: 1 |
Страница: 1 |
Вопрос: SOS Спасите наши души в нелёгком запросе
Добавлено: 06.03.06 16:10
Автор вопроса: Alex
Ситуация такая:
Необходимо написать макрос который срабатывал бы автоматически(и хранился бы в личной книге макросов) с каждым запуском очередной книги(файла) Excel (будь то xls или slk) и запускался бы только на открытую книгу(во время открытия) с определённым названием файла, т.е. срабатывал бы на определённый файл и всё время проверял бы открыт этот файл или закрыт,проще говоря if открыт then запустить макрос(который будет написан и храниться в другом модуле личной книге макросов ) на выполнение. А то что нужно сделать над этим файлом мы сами подмакросим.
Помогите, этим вы спасёте заблудшие , заблудившиеся и погрядшие в макросах и скриптах две душы от ...!!!??? и долгих поисках.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 06.03.06 16:28
Не знаю, как насчёт личной книги, не юзал...
Но если создать новую книгу, в thisworkbook записать
Private WithEvents app As Excel.Application
Private Sub Workbook_Open()
Set app = ThisWorkbook.Application
End Sub
Private Sub app_WorkbookOpen(ByVal Wb As Excel.Workbook)
If Wb.FullName = "..." Then
End If
End Sub
Номер ответа: 2
Автор ответа:
Alex
Вопросов: 6
Ответов: 3
Профиль | | #2
Добавлено: 07.03.06 09:46
Спасибо огромное за очень оперативный и точный по попаданию в яблочко ответ.
Именно это мы и пытались сделать безрезультатно.
Только я убрал //Full// If Wb.Name = "---.slk" Then , т.к. файл находится на сервере далеко, думаю, это не повлияет.
И всё таки у меня остались вопросы . Но перед этим расскажу как отрабатывает наша программа до макроса и суть всей остальной проблемы.
Мы компилируем написанную программу в slk файл затем помещаем его в ресурсный файл и подключаем его к программному комплексу, который его в последствии использует. И вот наконец когда запускается Slk файл(отчет), он сначала отрабатывает свою программу и в результате выдаёт нужные цифры. Но мы прекрасно знаем что макрос написать slk файле это нонсенс. А нам иногда необходимо сделать из полученных цифр после отработки скомпилированной программы в slk файле сводные таблицы и более сложные расчеты. Но есть юзверы которые не дружат с кнопками на панелях(пропадают …..и т.д.). Поэтому и наросла эта проблема отработки всей программы за раз.
Вопрос:
1)Как будет выглядеть программа в -----.XLA если нужно отслеживать на запуск более 5 файлов с также последующем запуске условия(или лучше создать несколько -----.XLA)?
2)Отработает ли сначала наша программа скомпилированная в Slk файл а затем -----.XLA , т.е. не повлияет ли наша прога на -----.XLA, что сработает раньше, если с таким уже сталкивались?
Заранее благодарен за ответ.
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 07.03.06 11:07
1. Очень просто будет выглядеть...
select case wb.name
case "1.slk"
...
case "2.slk"
...
case "3.slk"
...
end select
End Sub
2. А фиг его знает... если что, из xla автомакрос вызывается wb.runautomacros(xlAutoOpen).
Номер ответа: 4
Автор ответа:
Alex
Вопросов: 6
Ответов: 3
Профиль | | #4
Добавлено: 07.03.06 14:52
Спасибо за очередную подсказку.
Всё работает отлично , но только если этот ---.slk создан и хранится гдето в видимом месте,в чистом виде .А у нас этот slk закомпилирован в ресурсный файл и содержит программу.
Т.е. в результате на нашем файле макрос не срабатывает совсем после его открытия .
Я думаю что XLA срабатывает раньше ,не даёт возможности отработать сначала нашей проге во время загрузки.
1)Может быть это можно решить какойто задержкой по времени на срабатывание чуть чуть попозже макроса XLA(после полного открытия ---.slk , у которого название файла совпадает с названием листа)?
2)Или может быть лучше сработать макросу не на Workbook а на WorkSheets?
Помогите пожалуйста мы совсем зашились из за этой проблемы.