| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > макросы в excel |
| Автор: Гость_lana 21.6.2005, 13:11 |
| есть макрос, который я назначила пункту меню. как сделать так, чтобы мой макрос срабатывал для этого пункта меню на любом другом компьютере где запускается созданный мной excel файл (этот икселевский файл у меня создается в результате приложения написанного на java). |
| Автор: likhobory 21.6.2005, 14:37 | ||
при открытии файла присваивай программно макрос пункту меню
|
| Автор: Guest 21.6.2005, 15:14 |
| хх - это название пункта меню? а что такое yy? Получается что код моего макроса нужно все время перетаскивать на другой компьютер? а код макроса можно хранить в текстовом файле? |
| Автор: likhobory 21.6.2005, 15:37 | ||
| хх - переменные, подставляй реальный № (имя) элемента например, назначаешь макрос пункту меню "файл->закрыть"
код макроса держишь в соотв. модуле документа/шаблона/надстройки |
| Автор: Guest 21.6.2005, 17:07 |
| спасибо. теперь программно макрос присваивается пункту меню. но мне почему то еще не особо ясно, где я возьму эти макросы на другом компе |
| Автор: Любитель 21.6.2005, 19:18 |
| Их засовываешь в сам xls-файл. |
| Автор: likhobory 21.6.2005, 20:23 | ||
в этом же модуле, где расположен Sub Auto_Open, можешь хранить и макрос |
| Автор: Гость_lana 22.6.2005, 11:17 | ||
в какой файл? тот, что лежит в личной книге макросов или в конкретный файл, который у меня создается? и где вообще хранится модуль, в котором лежат макросы? |
| Автор: likhobory 22.6.2005, 11:57 | ||||
а где ж ты прописывала код CommandBars.ActiveMenuBar.Controls(1)... ????????????? |
| Автор: Гость_lana 22.6.2005, 12:07 |
| ну правильно, там я его и прописала, в редакторе visual Basic создала модуль и т.д. а возможны еще какие то варианты написания макросов? я это спрашиваю потому, что я не совсем понимаю как я буду создавать этот модуль программно из своего приложения, написанного на java. И что означает написать макрос в шаблоне? |
| Автор: likhobory 22.6.2005, 13:30 | ||||||
| Возможные варианты: 1. экспортируй код из bas-файла Допустим, есть текстовый файл "c:\1.bas" с содержимым:
тогда в коде своего приложения пропиши
2. Создавай модуля "с нуля"
только Application замени на свою объекную переменую |
| Автор: Гость_lana 23.6.2005, 10:50 |
| спасибо большое за объяснения. теперь я привязываю свои макросы к конкретному файлу. только вот при открытии данного файла постоянно срабатывает система безопасности. какие есть методы борьбы с этим? чтобы система не ругалась на мои макросы и пользователь даже не подозревал, что они есть? |
| Автор: likhobory 23.6.2005, 12:04 |
| на время работы Excel-приложения меняй значения реестра для officeXP [HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Security] "Level"=dword:00000001 для office2003 - .....\Office\11.0\Excel............. для office2000 - .....\Office\Excel............. |
| Автор: Гость_lana 23.6.2005, 15:29 |
| по ходу у меня возникли еще вопросы мои макросы должны срабатывать только один раз, когда создается иксел файл. если это файл сохранить под другим названием, то макросы остаются, а этого мне как раз не надо. Как можно убить эти макросы при закрытии начального файла? И если их убить, то пункт меню, для которого писался макрос, не будет работать. Как вернуть этому пункту меню его начальное действие? |
| Автор: likhobory 23.6.2005, 17:26 |
| недопонял, зачем присваивать кнопке макрос, который никогда не будет использоваться ?? если надо изменить некие параметы создаваемого EXCEL-файла (в т.ч. и св-ва пунктов меню), то делай это сразу из родительского приложения |
| Автор: Гость_lana 23.6.2005, 17:32 |
| не, макрос работает один раз, когда у меня создается иксел файл. после того как я его сохраняю под другим именем, то в нем уже не должно быть никаких макросов. вот я вроде нашла способ, чтобы при закрытии макросы исчезали Sub Aut0_Close() With ActiveWorkbook.VBProject.VBComponents .Remove .Item(5) End With Sub end Как будто здесь удаляется модуль и макросы исчезают. Но вместе с тем в новом документе при использовании пункта меню(где раньше работал макрос) появляется предупреждение что такового макроса нет ( |
| Автор: Guest 23.6.2005, 20:14 | ||||||
хм, покажи код "одноразового" макроса и зачем его присваивать пункту меню ?? |
| Автор: Гость_lana 24.6.2005, 09:34 | ||
это я делаю для меню "сохранить как". каким - то чудом при создании иксел файла в данном пункте по умолчанию типом файла является "веб архив", а мне нужно - "книга 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-ом количестве вариантов, и каждый раз при их открытии будет появляться это предупреждение. Вот почему я решила чтобы макрос работал только в первый раз. Но это решение конечно кривое. Но другое мне в голову не приходит |
| Автор: likhobory 24.6.2005, 10:28 | ||||
а не проще открыть EXCEL и поменять формат по умолчанию:сервис-параметры-переход-сохранять как.... или программно - при создании/сохранении файла
|
| Автор: Гость_lana 24.6.2005, 11:55 |
| это было бы значительно удобнее а этот код тоже написать в макрос auto_open или можно как нить без макросов обойтись? я сейчас написала такой единственный макрос, но в менюшке все равно отображается вебархив |
| Автор: likhobory 24.6.2005, 21:27 | ||
вариантов - туча, смотри по ситуации, можно так:
|
| Автор: Staruha 25.6.2005, 07:52 | ||
Вот например есть несколько открытых книг. Одна из них отчет. В отчете выбираешь из списка и попадаешь в нужную книгу-нужный лист.Там вносишь изменения,получаешь результат и его надо кинуть в отчет.Что на каждом листе кнопку рисовать? Вот и нужна одна на панели инстументов. У меня тоже такая ситуация возникла. Sub написала, кнопка на панели работает. И вот встал вопрос как сделать ,что бы кнопка при открытии документов загружалась,а при закрытии -тю-тю.Тогда и на другом компе будет грузиться. |
| Автор: likhobory 25.6.2005, 10:10 |
| трудно не согласиться, но я все же имел в виду данный конкретный случай |
| Автор: krb 8.7.2008, 00:03 |
| У меня вопрос!!! Есть Excel таблица с данными(информация о клиенте, даты, суммы и пр.). Нужно вытащить эти данные и поместить их Word документы. Расположение этих данных в Worde различаются. Как это сделать??? |
| Автор: kuler 14.5.2010, 16:34 |
| Помогите пожалуйста решить задачи. Нужно составить макросы в Экселе. 1 Перераспределить значения переменных x и y так, чтобы в x оказалось большее из этих значений, а в y — меньшее 2 Пусть элементами равностороннего треугольника являются: 1) сторона a; 2) площадь S; 3) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника. Буду очень благодарна, если сможете решить! |
| Автор: Dmitry0212 19.5.2014, 09:37 |
| Здраствуйте. Помогите поправить задание в контрольной работе по информатике. Создан макрос, который считает количество телефонов по введенной марке телефона. 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 Преподаватель хочет, чтобы название фирмы вводить не вручную, а выбирать из списка уже имеющихся в базе данных. Не могу сделать такого. |