Внедрение в файл Excell формы, макроса из другого файла

Программирование на Visual Basic for Applications
Agent_Smith
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 11.05.2005 (Ср) 16:01
Откуда: РФ, Москва

Внедрение в файл Excell формы, макроса из другого файла

Сообщение Agent_Smith » 12.05.2005 (Чт) 14:15

Помогите пожалуста реализовать такую вещь:

Есть файл (Книга1), в котором - формы, макросы, собирающие данные у юзера. После чего, на основании собранных данных, генерится другой файл (Книга2), с 2 листами.

Нужно:

-программа минимум - внедрить из Книги1 в Книгу2 форму заданного вида, с элементами управления (кнопки Ok, Cancel, TextBox...)

-в пределе - запаролить второй лист в Книге2.
Моё ламерское видиние реализации - внедрение в Книгу2 формы, макроса. Задание переменной при открытии Книги2, например, в False. Проверка значения переменной по событию Select листа 2. Если False - модально выводится вышеуказанная форма. При правильном вводе пароля - установление переменной в True, активация листа.
Как-то так вроде.
Никаких заморочек с защитой пароля, макроса - не нужно вообще. С файлом будут работать даже не дятлы - туканы.


Помогите пожалуйста - поверхностное знание VBA ужасно замедляет творческий процесс... За 2 дня нарыл лишь, как внедрить макрос, записать его, да вставить форму путём
Код: Выделить всё
Application.Workbooks(Workbooks.Count).VBProject.VBComponents.Add (vbext_ct_MSForm)

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 12.05.2005 (Чт) 14:34

Если хочешь быстро, выйди в треп или работу и предложи москвичам помочь тебе за как договоритесь, работы на пол-дня.
Плюсы:
- познакомишься с знающими людьми, которых потом можно задать вопросы;
- выпьешь пива;
- тебе расскажут, что и как делать;
:wink:
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Agent_Smith
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 11.05.2005 (Ср) 16:01
Откуда: РФ, Москва

Сообщение Agent_Smith » 12.05.2005 (Чт) 14:49

Спасибо за ответ!

Igor_123 писал(а):Если хочешь быстро, выйди в треп или работу и предложи москвичам помочь тебе за как договоритесь


Никогда не оспаривал необходимость платить добром за добро, но:
- сам взялся за эту задачку в качестве бескорыстного вспоможения знакомым... тогда уж прощще перенаправить их с ящиком пива к "знающим" :(
- пиво распить с хорошими людьми - всегда рад; только где взять... нет, не денег - времени?
- и, наконец, процесс-то идёт; но как-то... нешибко; вот выяснил, что помимо подключения Microsoft Visual Basic for Applications Extensibility, для того, чтобы сделать Form.Show(Modal) нужно ещё что-то. Продолжаю поиски.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 12.05.2005 (Чт) 16:37

Ну тады утро вечера мудренее :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Agent_Smith
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 11.05.2005 (Ср) 16:01
Откуда: РФ, Москва

А что делать...

Сообщение Agent_Smith » 12.05.2005 (Чт) 16:52

Да уж...
Туплю уже. Вспоминал, что форму вызывает ИмяФормы.Show ещё минут 50.

Думаю, экспортировать макрос, форму в файл, и оттеда импортировать в Книгу2.

А вообще - засада не зная языка пытаться что-то делать :(

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 12.05.2005 (Чт) 17:16

А поробуй сделать в виде шаблона книги, и тогда при создании книги на основе этого шаблона в книге будут все необходимые тебе формы и макросы. Это как вариант.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Agent_Smith
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 11.05.2005 (Ср) 16:01
Откуда: РФ, Москва

Сообщение Agent_Smith » 16.05.2005 (Пн) 0:13

К сожалению, не нашёл, как можно сказать макросу, какой шаблон использовать при создании новой книги. Изменять же шаблон-по-умолчанию нельзя... :(

Вроде бы всё получается при помощи экспорта реализовать, но - снова неувязочка. Относительных путей VBA в Excell'е не приемлит (может, только у меня? ;) ), а указывать абсолютный путь к файлам с модулем и формой по ряду причине не могу.

Заморочился с выковыриванием пути из ThisWorkbook.FullName, и последующим использовании его при импорте формы, модуля в новую Книгу2. Но... некрасиво это как-то...

Нельзя ли из одного файла экспортировать-а-потом-импортировать модуль в другой файл не совершая предварительного сохранения объекта в файле?

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 16.05.2005 (Пн) 10:39

Object Browser писал(а):Function Add([Template]) As Workbook

Template - строка с путем к шаблону.

Пример:
Код: Выделить всё
Workbooks.Add "c:\sample.xlt"
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Agent_Smith
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 11.05.2005 (Ср) 16:01
Откуда: РФ, Москва

Чуть-чуть осталось! Ещё один совет, плиз! :)

Сообщение Agent_Smith » 16.05.2005 (Пн) 10:45

Господа хорошие, я почти всё, что хотел - реализовал.
Осталась сущая малось - дописать из макроса VB в одном файле в другой файл код VB.

В ThisWorkbook, модули, формы всё прекрасно пишется с помощью
Код: Выделить всё
Application.Workbooks(Workbooks.Count).VBProject.VBComponents.Item(1).CodeModule.InsertLines 1, "Та самая строка"


А как дописать код в Лист1, Лист2?
Даже указывая в вышепреведённой строке минимальный индекс - Item(1), пишется всё равно лишь в ThisWorkbook

Тупил ещё полчаса...
Этот вопрос решил.
Оказалось всё прощще некуда - в аргументе Item указывается имя объекта. Типа Item("Лист1") И всё.

Блин, как же недостаёт знания языка... :)
Последний раз редактировалось Agent_Smith 16.05.2005 (Пн) 12:33, всего редактировалось 1 раз.

Agent_Smith
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 11.05.2005 (Ср) 16:01
Откуда: РФ, Москва

Сообщение Agent_Smith » 16.05.2005 (Пн) 10:46

Igor_123 писал(а):Object Browser писал(а):


Сильно сказано :)))))))

Спасибо, попробую!!!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 16.05.2005 (Пн) 13:40

А с шаблоном, чем не нравиться???
У меня работает через шаблон.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Agent_Smith
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 11.05.2005 (Ср) 16:01
Откуда: РФ, Москва

Сообщение Agent_Smith » 16.05.2005 (Пн) 13:58

С шаблоном нравится, и даже очень (есть мнение, что и работать быстрее будет, и проще в дальнейшем исправления вносить в вид генерируемой книги, и вообще).
Но - все силы были брошены на "достижение результата любой ценой". Так уж вышло, что был выбран путь перректального удаления гланд.

Но - результат достигнут.
Теперь, не завязываясь на времени, буду спокойно работать над темой "с шаблоном".

Ещё раз - спасибо за советы и поддержку! :)

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 16.05.2005 (Пн) 14:02

Agent_Smith писал(а):Так уж вышло, что был выбран путь перректального удаления гланд.


Главное, что-бы больному полегчало, :D и что-бы все не оказалось ложкой :D

Удачи!
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList