Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/50: Рейтинг темы: голосов - 50, средняя оценка - 4.64
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867

Добавление макросов в личную книгу Personal.XLSB

12.07.2013, 11:16. Показов 9954. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Столкнулся со следующей проблемой: написал несколько макросов для Excel, используя Microsoft Visual Basic for Applications, макросы содержат вызовы форм, формы находятся в этом же VBA проекте в папке Forms. В итоге все работает, для макросов вывел отдельные кнопки на Ribbon-ленту вверху, все работало отлично. При перемещении файла Excel в другую директорию и попытке запустить макросы при помощи добавленных в ленту кнопок получил сообщение об ошибке вида: "Не удается выполнить макрос "\\путь к файлу'!Название макроса". Возможно этот макрос отсутствует в текущей книге либо все макросы отключены." Если же запускать макросы через меню макросов, то все работает. Я так понял необходимо добавить макросы в личную книгу Personal.xlsb чтобы они были видны в пределах локальной машины. Не пойму понять как это сделать правильно, делать Export File для всех модулей и форм( тогда получается какая-то каша) или добавлять формы в Personal.xlsb и копировать кодом?? Объясните пожалуйста или дайте ссылку.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2013, 11:16
Ответы с готовыми решениями:

Как восстановить личную книгу макросов?
После редактирования макроса эксель завис - и теперь личная книга макросов не открывается Кто то подскажет как восстановить можно? ...

Пропадает файл PERSONAL.XLSB
Здравствуйте! Я хочу написать макрос и сохранить его в личной книге макросов, чтобы он потом был доступен из неё в разнвх документах. ...

Событие Workbook_SheetBeforeRightClick для PERSONAL.XLSB
Что за подстава с этими событиями в VBA... Событие Workbook_SheetBeforeRightClick - все работает как хотел, но для единичного файла...

3
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
12.07.2013, 11:34
Естественно кнопки на ленте вызывают макросы из определённого файла - ведь может быть много разных файлов, в которых могут быть даже и одинаково названные макросы!
Персонал - это возможный вариант. Но зачем туда копировать всё? Достаточно небольшого кода, который уже будет или вызывать диалог выбора файла, и далее макрос того файла, или сразу вызывать макрос из активного в данный момент файла.
А вообще свои кнопки на панель обычно помещают сами файлы при их открытии, и убирают при закрытии.
Я обхожусь контекстным меню ячейки, или даже просто Alt+F8
1
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
12.07.2013, 14:35  [ТС]
Hugo121, благодарю) Последовал вашему совету про вызов макроса из Personal.xlsb . Получилось просто:
PureBasic
1
2
3
Sub Название макроса() 
Application.Run ("'Название моего файла.xlsm'!Название моего макроса")
End Sub
Теперь при перемещении с панели вызывается без проблем)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.07.2013, 02:54
Лучший ответ Сообщение было отмечено как решение

Решение

Людвиг Бодмер, как альтернативные с точки зрения удобств варианты можете рассмотреть:
1) создание пользовательского меню на ленте. Пример есть в коде Catstail здесь.
Или вот кусок укороченного кода из моего проекта:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'Добавить пользовательскую панель инструментов
'при запуске книги Excel
Sub Auto_Open()
Dim comBar As CommandBar
Dim comBarBut As CommandBarButton
Dim mnuXXX As CommandBarControl
Dim n As Long, СtlName As String
 
       СtlName = "Розподіл навантаження"
 
       Set comBar = CommandBars("WorkSheet Menu Bar")
 
       For n = 1 To comBar.Controls.Count
           If comBar.Controls(n).Caption = СtlName Then Exit Sub
       Next
 
       Set mnuXXX = comBar.Controls.Add(Type:=msoControlPopup, Temporary:=True, Before:=n)
 
       With mnuXXX
 
            .Caption = СtlName
 
            With .Controls.Add(Type:=msoControlButton)
                 .BeginGroup = True
                 .Caption = "Почати розподіл"
                 .OnAction = "Start_Form"
                 .FaceId = 636
            End With
 
            With .Controls.Add(Type:=msoControlButton)
                 .BeginGroup = True
                 .Caption = "Про автора"
                 .OnAction = "About"
                 .FaceId = 59
            End With
 
       End With
End Sub


2) создание UserForm с перечнем нужных макросов. Само меню вызывать комбинацией клавиш.
Назначить на автозапуск макроса:
Visual Basic
1
Application.OnKey "^+{Z}", "Ячейка_окрасить_зеленым"
Помощь: MSDN
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.07.2013, 02:54
Помогаю со студенческими работами здесь

Запустить макрос в активной книге Excel из макроса в personal.xlsb
Есть некоторый макрос запускающийся из personal.xlsb Макрос добавляет в активную книгу макрос zreport1.test. Но как его запустить ? ...

Копирование макросов в Личную Книгу
Уважаемые форумчане! Помогите, пожалуйста, решить проблему. Копирую рабочие макросы в PERSONAL.xslb, переназначаю кнопки "Обновить...

файл personal.xlsb
Добрый вечер! Как сделать, чтобы при запуске Excel 2007 автоматически не открывался файл personal.xlsb? Спасибо.

Не подключается PERSONAL.XLS в новую открытую книгу Excel
Есть событие на кнопки private void BTN_START_Click(object sender, EventArgs e) { string Macro_Type =...

Как открыть книгу без выполнения макросов
Помогите открыть файл Excel vba, я туда вписала код: на закрытие программы


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru