![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]()
MS Office Excel 2007
создал Personal.xlsb. закинул туда макросы самые часто используемые. файл загружается (жаль путь к нему изменить похоже нельзя), макросы видны. вот беда только - макросы взаимосвязаны (т.е вызывают другие макросы или функции из того же модуля). только вот функции и макросы расположенные в personal.xls запустить так просто не выходит. например в Personal.xlsb есть Module word_func2007 в нем функция Public Function open_wordN однако запустить call open_wordN нельзя - не видна функция. что делать ? я то надеялся Personal.xls как фреймворк использовать... ... разделом случайно промахнулся (( перенесите в Excel Последний раз редактировалось bdfy; 25.02.2011 в 21:21. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
![]()
Никаких проблем.
Вызывайте через Application.Run Код:
Код:
Ничто не мешает: поместить свою функцию в книгу с любым именем и находящуюся по любому доступному пути, открыть книгу своим макросом при начале исполнения приложения, вызывать из этой книги функции и подпрограммы, явно указывая источник. Альтернатива: Воспользуйтесь ранним связыванием. Поместите ваш код в рабочую книгу и установите ссылку на неё в Tools Reference Если предположить, что MyPrj - имя вашего VBA проекта, cослаться на функцию можно будет как MyPrj.openwordN Разумеется, это можно сделать и с PERSONAL.XLSB. Не забудьте только изменить имя VBA проекта. Наконец, можно работать с кодом в VBA надстройке ... Последний раз редактировалось Aent; 25.02.2011 в 23:49. |
![]() |
![]() |
![]() |
#3 | ||
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]() Код:
Цитата:
а сделать так чтобы функции/макросы вели себя аккурат так же как если бы они были в активной книге нельзя ? Цитата:
|
||
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
![]() Цитата:
типа : Код:
При использовании библиотеки функций в нескольких проектах это даст профит в том, что править код нужно будет только в одном месте ... Так что либо Application.Run, либо раннее связывание. Хотя конечно, можно и модуль с кодом скопировать в свой проект ... Последний раз редактировалось Aent; 26.02.2011 в 00:43. |
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
![]()
Функционал вполне внятный. Просто каждая технология имеет свои особенности и ограничения. Я в больших проектах в которых макрокод используется с несколькими
рабочими книгами применяю ранее связывание. Сам код помещаю в XLAM надстройку. Любая технология требует определённой дисциплины программирования.Если же нужна полноценная VCS - переходите с VBA на VSTO. Кстати, если имя вашей функции уникально, то при использовании раннего связывания квалификатор проекта (модуля) можно не писать. Т.е вместо MyPrj.openwordN можно писать просто openwordN ![]() Последний раз редактировалось Aent; 26.02.2011 в 12:57. |
![]() |
![]() |
![]() |
#7 | |||
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]() Цитата:
![]() Цитата:
![]() Цитата:
у меня большинство проектов есть связка Excel (расчеты)/Word (отчет формирует там)/Visio (для схем и диаграмм которые ексель не может построить). все на VBA запускается из Excel, иногда Visio (если все вокруг графики вертиться). Вот давно сижу думаю как организовать все это лучше, чтобы одинаковый код в различных проектах не повторялся. для Excel похоже вот оно решение ![]() |
|||
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
![]()
VSTO это Visual Studio Tools for Office - средство программирования
приложений MS OFFICE в среде MS Visual Studio. Работает и с VS 2008 и с 2010. Программирование ведётся не на VBA а на .NET языках. Например, на С# или VB.NET. В проектах доступна расширенная событийная модель офиса + все инструментальные средства VS и сопутствующих утилит. Но всё сильно завязано на версию. VSTO разных версий и для офиса 2003 и для 2010 отличаются сильно. Начните знакомство со статьи: http://msdn.microsoft.com/ru-ru/magazine/cc163373.aspx (Обратите внимание на раздел "Развертывание решений VSTO") Заметка на Хабре: http://habrahabr.ru/blogs/net/54880/ Хорошая статья про создание VSTO ADD-IN для Excel 2007: http://www.clear-lines.com/blog/post...tallation.aspx Достаточно внятная книга на английском http://ilikebooks.ru/16451-vivek-tha...fice-2007.html Про использование с PowerPoint и VISIO: http://msdn.microsoft.com/ru-ru/magazine/cc163471.aspx http://blogs.msdn.com/b/chcast/archi...o-2005-se.aspx Что касается Word, то только используя событийную модель VSTO можно в полной мере воспользоваться новыми элементами управления содержимым. http://msdn.microsoft.com/ru-ru/magazine/cc163403.aspx http://archive.msdn.microsoft.com/generateinvoicesvsto Ну у разумеется, нельзя пройти мимо: http://msdn.microsoft.com/en-us/vsto/default Последний раз редактировалось Aent; 26.02.2011 в 15:49. |
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 12.11.2009
Сообщений: 258
|
![]()
отличная подборка... пойду глядеть.
Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
![]()
Там в каждой версии свои маленькие радости
![]() Я бы сейчас ориентировался на VS2010 + Office 2010 |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Personal.xls чудеса на виражах | 1134 | Microsoft Office Excel | 6 | 20.07.2010 09:35 |
personal.xls | ruavia3 | Microsoft Office Excel | 7 | 07.04.2010 13:30 |
Разорвана связь с "PERSONAL.XLS" | JhonNik153 | Microsoft Office Excel | 2 | 13.05.2009 17:29 |
как копировать файлы Kaspersky Anti-Virus Personal\5.0\Bases\*.* | Podlec | Безопасность, Шифрование | 3 | 16.11.2007 11:37 |
как присвоить значение ячейки R1C1 из 1.xls, допустим какой-нибудь любой ячейке из 2.xls ? | diabloskrk | Microsoft Office Excel | 3 | 08.10.2007 12:27 |