Страницы: 1
RSS
Интеграция макроса в Excel
 
Есть модуль с проектом. Необходимо чтобы он запускался каждый раз с открытием Excel.  
 
Если сохраняю проект как книгу т.е. XLS то она каждый раз открывается и пользователь изменяя документ постоянно пишет все изменения в оригинал.  
 
Если осхраняю проект как надстройку XLA, то все получается хорошо, за исключением того, что я не могу обратиться к своему коду. Приходится открывать редактор, выбирать свой проект и только оттуда запускать макрос.  
 
Как можно на него сослаться извне, по кнопке ВЫПОЛНИТЬ МАКРОС данныей проект не виден.
 
Application.Run "template.xla!m_common.p"  
 
надеюсь разберетесь где название надстройки, где модуля, а где процедуры
 
Это все хорошо, таким образом можно запустить макрос, например создав кнопку. А мне нужно прописать путь к нему из кнопки, которая расположена на панели инструментов.  
 
Я пробовал писать myfile.xla!MyMacros  
но ничего не получается.  
 
Кстати, вопрос в дополнение к предыдущему, как можно через код создать кнопку на панели инструментов и назначить ей макрос и какую-то картинку?  
 
Я делал так:  
 
'Создаю новую панель (Tool Bar)  
Application.CommandBars.Add(Name:="Price Labels").Visible = True  
'Добавляю кнопку  
Application.CommandBars("Price Labels").Controls.Add Type:=msoControlButton, _  
       ID:=2950, Before:=1  
'Задаю параметры кнопки  
With Application.CommandBars("Price Labels").Controls.Item(1)  
.Caption = "Мой макрос"  
 
End With  
 
А вот как присвоить ей макрос и картинку не нашел.
 
А что мешает запускать макрос по открытию Книги?  
Private Sub Workbook_Open()  
Call Макрос1 'Это Ваш нужный макрос  
End Sub
 
Проблема в том, что макрос не надо запускать по открытию книги.  
 
Он просто должен быть доступен, т.е. я сохранил код в надстройку эксель (XLA) и поместил ее в XLSTART. Когда пользователь откроет документ с определенными данными (каждый раз разный документ, причем это просто текст, преобразованый MS Excell) то он должен иметь возможность запустить макрос.  
 
В данный момент пробую вариант с POPUP Menu. Создал код:  
 
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)  
Dim icbc As Object  
For Each icbc In Application.CommandBars("cell").Controls  
   If icbc.Tag = "PopUp" Then icbc.Delete  
Next icbc  
   With Application.CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=1, temporary:=True)  
       .Caption = "Small Labels"  
       '.DescriptionText = "Description"  
       .OnAction = "SelectSmall"  
       '.Parameter="Id"  
       .Tag = "PopUp"  
       .Visible = True  
   End With  
End Sub  
 
Все окей, работает в обычных документах, а когда добавляю код в XLA, то его снова не видно нефига. А то что так сделать можно знаю точно, потому что пользуюсь фишкой SAMRADDATEPICKER там именно через такой механизм все реализовано.
Страницы: 1
Читают тему
Наверх