Модераторы: 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   Вверх
Гость_lana
Дата 23.6.2005, 17:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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

Sub Aut0_Close()

With ActiveWorkbook.VBProject.VBComponents
.Remove .Item(5)
End With

Sub end

Как будто здесь удаляется модуль и макросы исчезают.
Но вместе с тем в новом документе при использовании
пункта меню(где раньше работал макрос) появляется
предупреждение что такового макроса нет (
  Вверх
Guest
Дата 23.6.2005, 20:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
икселевский файл у меня создается
в результате приложения написанного на java

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

Цитата
макрос работает один раз, когда у меня создается иксел файл.

хм, покажи код "одноразового" макроса
и зачем его присваивать пункту меню ??



  Вверх
Гость_lana
Дата 24.6.2005, 09:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
и зачем его присваивать пункту меню ??

это я делаю для меню "сохранить как". каким - то чудом
при создании иксел файла в данном пункте по умолчанию
типом файла является "веб архив", а мне нужно -
"книга excel". вот с этой целью и было написано два макроса:

Sub SaveAs()

Dim fd As FileDialog

Set fd = Application.FileDialog(msoFileDialogSaveAs)

With fd

If .Show = -1 Then

.Execute

Else
End If
End With

Set fd = Nothing

End Sub

Sub Auto_Open()

CommandBars.ActiveMenuBar.Controls(1).CommandBar.Controls(5).OnAction = "SaveAs"

End Sub.

И пусть бы работал этот макрос и дальше, но постоянно влезает предупреждение
системы безопасности.
Вот я и пытаюсь с этим как-то бороться.
Пусть бы она хоть один раз предупреждала, но этот файл будет сохранен еще
в n-ом количестве вариантов, и каждый раз при их открытии будет появляться
это предупреждение.

Вот почему я решила чтобы макрос работал только в первый раз. Но это решение
конечно кривое. Но другое мне в голову не приходит smile

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


Опытный
**


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

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



Цитата
каким - то чудом
при создании иксел файла в данном пункте по умолчанию
типом файла является "веб архив", а мне нужно -
"книга excel"

а не проще открыть EXCEL и поменять формат по умолчанию:сервис-параметры-переход-сохранять как.... smile
или программно - при создании/сохранении файла
Код
Application.DefaultSaveFormat = xlNormal





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


Unregistered











это было бы значительно удобнее smile
а этот код тоже написать в макрос auto_open или можно как нить без макросов обойтись?
я сейчас написала такой единственный макрос, но в менюшке все равно отображается
вебархив
  Вверх
likhobory
Дата 24.6.2005, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вариантов - туча, смотри по ситуации, можно так:
Код
Sub Auto_Open()
Application.DefaultSaveFormat = xlNormal
End Sub





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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Цитата
и зачем его присваивать пункту меню ??

Вот например есть несколько открытых книг. Одна из них отчет. В отчете выбираешь из списка и попадаешь в нужную книгу-нужный лист.Там вносишь изменения,получаешь результат и его надо кинуть в отчет.Что на каждом листе кнопку рисовать? Вот и нужна одна на панели инстументов.
У меня тоже такая ситуация возникла. Sub написала, кнопка на панели работает. И вот встал вопрос как сделать ,что бы кнопка при открытии документов загружалась,а при закрытии -тю-тю.Тогда и на другом компе будет грузиться. smile



--------------------
Возмездие настигнет
PM MAIL   Вверх
likhobory
Дата 25.6.2005, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



трудно не согласиться, но я все же имел в виду данный конкретный случай


--------------------
PM MAIL   Вверх
krb
Дата 8.7.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 25.5.2008

Репутация: -1
Всего: -3



У меня вопрос!!!
Есть Excel таблица с данными(информация о клиенте, даты, суммы и пр.). Нужно вытащить эти данные и поместить их Word документы. Расположение этих данных в Worde различаются.  
Как это сделать???
--------------------
  
PM MAIL WWW ICQ   Вверх
kuler
Дата 14.5.2010, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.5.2010

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



Помогите пожалуйста решить задачи.
Нужно составить макросы в Экселе.

1
Перераспределить значения переменных x и y так, чтобы в x оказалось большее из этих значений, а в y — меньшее 
2
Пусть элементами равностороннего треугольника являются: 1) сторона a; 2) площадь S; 3) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника. 

Буду очень благодарна, если сможете решить! 
PM MAIL   Вверх
Dmitry0212
Дата 19.5.2014, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.5.2014

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



Здраствуйте. Помогите поправить задание в контрольной работе по информатике. 
Создан макрос, который считает количество телефонов по введенной марке телефона.

Sub zada4a2()
Sheets("База_данных").Select
    Range("A10").Select
    Selection.Copy
    Sheets("Задача2").Select
    Range("J4").Select
    ActiveSheet.Paste
Selection.Copy
    Sheets("Задача2").Select
    Range("J3").Select
    ActiveSheet.Paste

    Application.CutCopyMode = False
   фирма = InputBox("Введите название фирмы:")
    Range("J4").FormulaR1C1 = фирма

       Range("D7").Value = "Kоличество телефонов фирмы  " & фирма
End Sub

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

PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

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

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

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



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


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

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


 




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


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

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