Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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 записать
Option Explicit

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
, сохранить всё это как xla и подключить через Сервис-Надстройки, то получится искомое...

Ответить

Номер ответа: 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. Очень просто будет выглядеть...
Private Sub app_WorkbookOpen(ByVal Wb As Excel.Workbook)
  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?

   Помогите пожалуйста мы совсем зашились из за этой проблемы.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам