Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> макросы в excel 
:(
    Опции темы
Гость_lana
Дата 21.6.2005, 13:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











есть макрос, который я назначила пункту меню.

как сделать так, чтобы мой макрос срабатывал для этого
пункта меню на любом другом компьютере где запускается
созданный мной excel файл (этот икселевский файл у меня создается
в результате приложения написанного на java).

  Вверх
likhobory
Дата 21.6.2005, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



при открытии файла присваивай программно макрос пункту меню
Код
Sub Auto_Open()
CommandBars.ActiveMenuBar.Controls(хх).CommandBar.Controls(уу).OnAction = "macros"
End Sub



--------------------
PM MAIL   Вверх
Guest
Дата 21.6.2005, 15:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











хх - это название пункта меню?
а что такое yy?

Получается что код моего макроса нужно все время перетаскивать на другой компьютер?
а код макроса можно хранить в текстовом файле?

  Вверх
likhobory
Дата 21.6.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



хх - переменные, подставляй реальный № (имя) элемента
например, назначаешь макрос пункту меню "файл->закрыть"
Код
CommandBars.ActiveMenuBar.Controls(1).CommandBar.Controls(3).OnAction = "macros"

код макроса держишь в соотв. модуле документа/шаблона/надстройки

Это сообщение отредактировал(а) likhobory - 21.6.2005, 15:40


--------------------
PM MAIL   Вверх
Guest
Дата 21.6.2005, 17:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо. теперь программно макрос присваивается пункту меню.
но мне почему то еще не особо ясно, где я возьму эти макросы
на другом компе smile
  Вверх
Любитель
Дата 21.6.2005, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Их засовываешь в сам xls-файл.


--------------------
PM MAIL ICQ Skype   Вверх
likhobory
Дата 21.6.2005, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Цитата(Guest @ 21.6.2005, 18:07)
теперь программно макрос присваивается пункту меню.

в этом же модуле, где расположен Sub Auto_Open, можешь хранить и макрос

Это сообщение отредактировал(а) likhobory - 21.6.2005, 20:25


--------------------
PM MAIL   Вверх
Гость_lana
Дата 22.6.2005, 11:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Их засовываешь в сам xls-файл

в какой файл? тот, что лежит в личной книге макросов или в конкретный файл, который у меня создается?
и где вообще хранится модуль, в котором лежат макросы?
  Вверх
likhobory
Дата 22.6.2005, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Цитата(Guest @ 21.6.2005, 18:07)
теперь программно макрос присваивается пункту меню.

Цитата
и где вообще хранится модуль, в котором лежат макросы

а где ж ты прописывала код CommandBars.ActiveMenuBar.Controls(1)... ?????????????
smile


--------------------
PM MAIL   Вверх
Гость_lana
Дата 22.6.2005, 12:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну правильно, там я его и прописала, в редакторе visual Basic создала модуль и т.д.
а возможны еще какие то варианты написания макросов?
я это спрашиваю потому, что я не совсем понимаю как я буду создавать этот модуль
программно из своего приложения, написанного на java.
И что означает написать макрос в шаблоне?


  Вверх
likhobory
Дата 22.6.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Возможные варианты:
1. экспортируй код из bas-файла
Допустим, есть текстовый файл "c:\1.bas" с содержимым:
Цитата
Attribute VB_Name = "MyModule"
Sub Auto_Open()
CommandBars.ActiveMenuBar.Controls(хх).CommandBar.Controls(уу).OnAction = "macros"
End Sub

тогда в коде своего приложения пропиши
Код
Application.ThisWorkbook.VBProject.VBComponents.Import ("c:\1.bas")


2. Создавай модуля "с нуля"
Код
Const vbext_ct_StdModule =1  'стандартный модуль
Const vbext_ct_ClassModule=2 'модуль класса
Const vbext_ct_MSForm=3      'модуль формы

   Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule)
   Application.VBE.CodePanes(1).CodeModule.AddFromString  "Sub Auto_Open()" & vbCrLf & "CommandBars.ActiveMenuBar.Controls(1).CommandBar.Controls(3).OnAction = ""macros"" " & vbCrLf & "End Sub"

только Application замени на свою объекную переменую

Это сообщение отредактировал(а) likhobory - 22.6.2005, 15:29


--------------------
PM MAIL   Вверх
Гость_lana
Дата 23.6.2005, 10:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо большое за объяснения.
теперь я привязываю свои макросы к конкретному файлу.
только вот при открытии данного файла постоянно
срабатывает система безопасности.
какие есть методы борьбы с этим? чтобы система
не ругалась на мои макросы и пользователь даже
не подозревал, что они есть?

  Вверх
likhobory
Дата 23.6.2005, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



на время работы Excel-приложения меняй значения реестра
для officeXP
[HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Security]
"Level"=dword:00000001

для office2003 - .....\Office\11.0\Excel.............
для office2000 - .....\Office\Excel.............


--------------------
PM MAIL   Вверх
Гость_lana
Дата 23.6.2005, 15:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











по ходу у меня возникли еще вопросы smile
мои макросы должны срабатывать только один раз, когда создается иксел файл.
если это файл сохранить под другим названием, то макросы остаются, а этого
мне как раз не надо.

Как можно убить эти макросы при закрытии начального файла?

И если их убить, то пункт меню, для которого писался макрос,
не будет работать. Как вернуть этому пункту меню его начальное
действие?
  Вверх
likhobory
Дата 23.6.2005, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



недопонял, зачем присваивать кнопке макрос, который никогда не будет использоваться ??
если надо изменить некие параметы создаваемого EXCEL-файла (в т.ч. и св-ва пунктов меню), то делай это сразу из родительского приложения smile


--------------------
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.