Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
28.03.2024, 23:03:13
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Поиск:
Расширенный поиск
На форуме добавлена возможность подписки на
RSS
-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS
, расположенную левее наименования раздела.
33 233
Сообщений в
5 454
Тем от
6 750
Пользователей
Последний пользователь:
Alex1210
Excel это не сложно
Основные форумы
Полезные решения
Как перенести настройки Excel на другой компьютер?
Страниц:
1
2
[
Все
]
Вниз
« предыдущая тема
следующая тема »
Автор
Тема: Как перенести настройки Excel на другой компьютер? (Прочитано 54655 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Как перенести настройки Excel на другой компьютер?
«
:
13.05.2011, 19:18:00 »
Ситуация, наверное, типичная…
Я юзаю два компа: один на работе (под ХРюшей), другой дома (Виста). На обоих компах Excel-2003.
Большую часть макросов в Personal.xls и доработок панелей управления (наделал много своих кнопочек для вызова макросов, своих менюшек со своими кнопочками, своих кнопочек в стандартных менюшках...) делаю на работе
Хочется и дома иметь такой же настроенный "под себя" Excel, как и на работе.
Но к сожалению просто тупо подложить домашнему Ёкселю файл Excel11.xlb вместе с папочкой XLSTART нельзя, т.к. не совпадают пути к макросам, лежащим в Personal.xls
А сидеть и просто в режиме настройки перепрописывать макросы, прикреплённые к каждой кнопочке жутко лень.
The_Prist
на Планете в топике
"Перенос макросов на другой комп с изменением путей доступа к ним"
предлагал делать это макросом, который пройдётся циклом по всем кнопочкам менюшек и исправит у них путь, прописанный в OnAction:
Код:
Sub Replace_Personal() ' перенос макросов и настройки видимых панелей на другой компьютер
Const NewPath$ = "'C:\Users\MyNewUserName\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLS'!" ' если переносить на Vista
'Const NewPath$ = "'C:\Documents and Settings\MyNewUserName\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS'!" ' если переносить на XP
Dim cmdBar As Object, iBtn As Object, sPath$
For Each cmdBar In Application.CommandBars
If cmdBar.Visible Then
For Each iBtn In cmdBar.Controls
On Error Resume Next
sPath = iBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then iBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
Next iBtn
End If
Next cmdBar
End Sub
Пробовал. Работает, но не полностью : переписывает пути только у тех кнопочек, которые видны на экране, а у тех кнопочек, которые не видны - нет.
Попробовал убрать
Код:
If cmdBar.Visible Then …
- почему-то не помогло
Всё равно не правятся пути у кнопочек, спрятанных в недрах выпадающих менюшек...
У кого-нибудь есть идеи, как "подпилить"?
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #1 :
13.05.2011, 19:28:53 »
Что ж, Алексей, отвечу и здесь
Возможно, надо еще по вып.меню шариться. Но необходимо знать, где именно они расположены. Если это меню создано программно(как и кнопки), то надо еще делать проверку:
Код:
For Each cmdBar In Application.CommandBars
If cmdBar.Visible Then
For Each iBtn In cmdBar.Controls
If iBtn.Type <> 1 Then
For Each oSubBtn In iBtn
sPath = iBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then iBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
Next oSubBtn
End If
sPath = iBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then iBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
Next iBtn
End If
Next cmdBar
Это лишь примерный код, который не тестировался. Но двигаться надо именно в этом направлении. ну и для оптимизации неплохо бы в таком случае код замены путей к макросам вынести в отдельную функцию.
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #2 :
13.05.2011, 20:04:27 »
Спасибо, Дмитрий.
Будем попробовать.
А что касается программно создаваемых меню и кнопок, то я не настолько крут чтобы это широко применять. Поэтому все кнопочки и менюшки у меня созданы вручную.
Записан
С уважением, Алексей
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #3 :
14.05.2011, 22:14:57 »
Не идёт.
Затыкается на строке
Код:
For Each oSubBtn In iBtn
Говорит, что объект не поддерживает данное свойство или метод.
Решил, что вы ошиблись в значении параметра при проверке того, что это субменю. Посмотрел в справке, увидал, что могут быть 3 значения MsoBarType:
msoBarTypeNormal == 0
msoBarTypeMenuBar == 1
msoBarTypePopup == 2
Заменил в коде:
Код:
If iBtn.Type = 1 Then ' msoBarTypeMenuBar
Всё равно затыкается в коде на том же месте -
Код:
For Each oSubBtn In iBtn
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #4 :
14.05.2011, 22:41:12 »
На самом деле правильней вообще так:
If iBtn.Type > 2 Then
т.к. 3 и 4 это типы с подменю. Спотыкаеться может потому, что у Вас не совсем так созданы кнопки. Я говорил про созданные через надстройки. Предложил как вариант. Возможно у созданных вручную конструктором меню немного другие свойства. Надо будет завтра поэкспериментировать. Правда только в том случае, если Алексей раскроет секрет того, как именно пошагово создаются эти выпадающие меню(и создаются ли).
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #5 :
15.05.2011, 10:23:00 »
Все действия по ручной настройке интерфейса Еxcel "под себя" произведены в режиме настройки и абсолютно стандартны.
Есть такие типы самодельных элементов:
1.
Постоянно видимая на любой из стандартных панелей управления кнопка
для вызова своего макроса (надеюсь, как её сделать в режиме настройки из "болванки"-смайлика
пошагово объяснять не нужно?)
2.
Кнопка для вызова своего макроса, вставленная в одно из стандартных выпадающих меню одной из стандартных панелей.
Например, в меню "Сервис" у меня вставлена кнопочка вызова макроса NoDupes_InRange (не вам и не мне объяснять, что этот макрос делает
)
3.
Самодельное раскрывающееся меню, постоянно видимое на одной из стандартных панелей
Меню сделано опять же стандартно "ручками" в режиме настройки из элемента "новое меню".
4.
Самодельное раскрывающееся меню с кнопками для вызова своих макросов, встроенное в одно из стандартных раскрывающихся меню одной из стандартных панелей
Например, в меню "Вставить" у меня после стандартного пункта "Формулу..." добавлено своё меню "UDF...", внутри которого размещены кнопки для вызова макросов, вставляющих в выбранную ячейку наиболее нужных мне UDF-ок.
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #6 :
15.05.2011, 10:44:45 »
Тогда все просто:
Код:
Sub Replace_Personal() ' ïåðåíîñ ìàêðîñîâ è íàñòðîéêè âèäèìûõ ïàíåëåé íà äðóãîé êîìïüþòåð
Const NewPath$ = "'C:\Users\MyNewUserName\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLS'!" ' åñëè ïåðåíîñèòü íà Vista
'Const NewPath$ = "'C:\Documents and Settings\MyNewUserName\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS'!" ' åñëè ïåðåíîñèòü íà XP
Dim cmdBar As Object, iBtn As Object, sPath$, oSubBtn As Object
For Each cmdBar In Application.CommandBars
If cmdBar.Visible Then
Debug.Print cmdBar.Name
For Each iBtn In cmdBar.Controls
On Error Resume Next
If iBtn.Type = 10 Then
For Each oSubBtn In iBtn.Controls
sPath = oSubBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then oSubBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
Next oSubBtn
Else
sPath = iBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then iBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
End If
Next iBtn
End If
Next cmdBar
End Sub
Вроде должно работать.
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #7 :
15.05.2011, 12:35:21 »
Дмитрий, спасибо.
Уже ПОЧТИ полностью работает.
Остались проблемы:
1. Если какое-то меню в момент не открыто (например, меню "рисование" или "конструктор"), то в нем OnAction и не исправляется. Сразу же по ходу и вопрос: а почему в макросе обрабатываются только видимые панели инструментов? (If cmdBar.Visible Then...)
В общем попробовал этот If cmdBar.Visible убрать. В скрытых панелях инструментов мои кнопочки на панелях заработали!
Так что этот мелкий трабл я поборол
2. Не работают кнопки в самодельных раскрывающихся меню, встроенных в стандартные раскрывающиеся меню.
Я так понимаю, что это уже вложение следующего уровня - не oSubBtn, а oSubSubBtn
и его нужно тоже обрабатывать аналогично.
Мог бы попробовать написать и сам, но к сожалению, не нашёл ничего в справке про проверяющийся номер типа: If iBtn.Type = 10, хотя можно было бы сделать и по аналогии... Но не люблю использовать и писать макросы, которые не понимаю как работают
Честно говоря, к тому же боюсь запутаться во вложенных циклах
«
Последнее редактирование: 15.05.2011, 12:37:57 от Alex_ST
»
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #8 :
15.05.2011, 12:51:07 »
1. Эта строка осталась как пережиток с изначальной темы. Там кнопки были все видимые и данную строку я применил для ускорения работы кода.
2. Как вариант применить рекурсию
Код:
Option Explicit
Const NewPath$ = "'C:\Users\MyNewUserName\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLS'!" ' если переносить на Vista
'Const NewPath$ = "'C:\Documents and Settings\MyNewUserName\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS'!" ' если переносить на XP
Dim sPath As String
Sub Replace_Personal() ' перенос макросов и настройки видимых панелей на другой компьютер
Dim cmdBar As Object, iBtn As Object, oSubBtn As Object
For Each cmdBar In Application.CommandBars
For Each iBtn In cmdBar.Controls
On Error Resume Next
If iBtn.Type = 10 Then
Call Popup_Btns(iBtn.Controls)
Else
sPath = iBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then iBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
End If
Next iBtn
Next cmdBar
End Sub
Function Popup_Btns(oSubPopupBtns As Object)
Dim oSubBtn As Object, iBtn As Object
For Each oSubBtn In oSubPopupBtns
If oSubBtn.Type = 10 Then
Call Popup_Btns(oSubBtn.Controls)
Else
sPath = oSubBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then iBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
End If
Next oSubBtn
End Function
«
Последнее редактирование: 15.05.2011, 12:53:11 от The_Prist
»
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #9 :
15.05.2011, 13:58:17 »
Спасибо. Покручу, рассмотрю со всех сторон...
Уж больно циклы в макросе и в рекурсивной функции похожи... Кажется мне, что это можно в один макрос объединить... Да и использовать глобальные переменные я не шибко люблю.
Обязательно ближе к вечеру попробую ваш вариант.
А потом, если заработает, "подпилю" немножко. Вдруг удастся упростить и обойтись без глобальных переменных?
К тому же я не думаю, чт о кому-то где-то взбредёт в голову делать раскрывающиеся меню с большим числом уровней вложений… Может, обойтись, например, 3-мя - 4-мя? Боюсь я рекурсий - от них и до бесконечного цикла недалеко
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #10 :
15.05.2011, 14:03:42 »
Алексей - грамотная рекурсия не страшна, а порой очень даже необходима. Если в данном коде её не применять - то придется делать доп.проверки на наличие вып.меню в коде и вкладывать циклы внутрь каждой из них. Код раздуется и будет трудночитаем. Именно в построенных таким образом процедурах впоследствии очень трудно разбираться. Так что не бойтесь рекурсий - они могут вызвать утечку памяти только при большой вложенности и неверной организации работы циклов.
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #11 :
15.05.2011, 17:56:19 »
А всё-таки, я так и не смог найти в справке никаких других типов элементов панелей управления кроме
msoBarTypeNormal == 0
msoBarTypeMenuBar == 1
msoBarTypePopup == 2
а что такое iBtn.Type = 10, так и не нашёл
Или не так искал
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #12 :
15.05.2011, 18:03:16 »
Это тип контрола. Popup.
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #13 :
15.05.2011, 18:17:19 »
Проверил. С рекурсией вообще только кнопки переписались. А в менюшках даже простые самодельные кнопки работать не хотят...
А в предыдущем варианте работали. Не работали только кнопки в выпадающих меню, вложенных в выпадающие меню.
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #14 :
15.05.2011, 18:48:43 »
Наверное из-за того, что ошибочка закралась в код при копировании. Функция должна выглядеть так:
Код:
Function Popup_Btns(oSubPopupBtns As Object)
Dim oSubBtn As Object
For Each oSubBtn In oSubPopupBtns
If oSubBtn.Type = 10 Then
Call Popup_Btns(oSubBtn.Controls)
Else
sPath = oSubBtn.OnAction
If Len(sPath) > 0 Then
If InStr(1, sPath, "'!", 1) > 0 Then oSubBtn.OnAction = NewPath & Mid(sPath, InStr(1, sPath, "!", 1) + 1)
End If
End If
Next oSubBtn
End Function
Теперь все должно работать.
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #15 :
15.05.2011, 18:56:51 »
Спасибо, Дмитрий.
Всё заработало.
Ещё вопрос:
а почему
Код:
Function Popup_Btns(oSubPopupBtns As Object)
, а не
Код:
Sub Popup_Btns(oSubPopupBtns As Object)
Записан
С уважением, Алексей
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
Репутация: +485/-0
Офлайн
Сообщений: 5 828
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #16 :
15.05.2011, 19:02:25 »
Мне больше нравится применять функции, нежели процедуры, если я использую их как подчиненные, да еще и с параметрами.
Записан
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:
-
41001332272872
-
R298726502453
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #17 :
15.05.2011, 19:09:08 »
Спасибо. Понял.
Сейчас вынесу всё-таки саму замену пути в отдельную процедурку (в ней же и буду задавать константы, а не как публичные) и посмотрю, не удастся ли всё-таки сделать Sub Popup_Btns и Sub Replace_Personal одной процедурой.
Конечно, я понимаю, что Sub Popup_Btns должна получать как аргумент oSubPopupBtns, но ведь можно попробовать использовать в коде If ismissing oSubPopupBtns then ...
Записан
С уважением, Алексей
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #18 :
15.05.2011, 21:40:05 »
Оформил макрос, разработанный Дмитрием, в отдельную книгу.
Отлично работает.
Вот, посмотрите, кому интересно. Может пригодиться.
Записан
С уважением, Алексей
Alex_ST
Постоялец
Репутация: +13/-0
Офлайн
Сообщений: 156
Re:Как перенести настройки Excel на другой компьютер?
«
Ответ #19 :
16.05.2011, 14:55:08 »
Ещё подпилил (с помощью Дмитрия, естественно)
Теперь уже, кажется, финальный вариант
Путь в OnAction теперь меняется только у тех кнопок, которые ссылаются на макросы, расположенные в Personal.xls
Да и путь к Personal.xls самостоятельно вбивать в ячейки нет необходимости.
А код, кстати, получился компактный настолько, что его можно даже просто модулем в Personal.xls хранить и при необходимости прямо в нём и запускать.
Ну, или вот отдельным файлом:
«
Последнее редактирование: 16.05.2011, 15:01:46 от Alex_ST
»
Записан
С уважением, Алексей
DOC
Новичок
Репутация: +0/-0
Офлайн
Сообщений: 28
Re:Как перенести настройки Excel на другой компь
«
Ответ #20 :
02.12.2013, 19:49:49 »
Для Екселя 97-2003
Отобразить Personal.xls
в режиме настройки Вложить меню и кнопки в новую панель кнопок
вложить панель кнопок в Personal.xls
Скрыть Personal.xls
Закрыть Ексел с сохранением...
И переноси Personal.xls
А если хочешь поделиться кнопками с друзьями, кладешь Personal.xls в папку, папку в папку, папки переименовываешь по стандартному пути расположения, чтобы не задавать папку xls start.
«
Последнее редактирование: 02.12.2013, 19:52:58 от DOC
»
Записан
Страниц:
1
2
[
Все
]
Вверх
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Правила форума и вопросы по работе форума
-----------------------------
=> ОБЩИЕ ПРАВИЛА ФОРУМА
=> ВОПРОСЫ ПО РАБОТЕ ФОРУМА
-----------------------------
Основные форумы
-----------------------------
=> Вопросы по Excel и VBA
=> PowerQuery, PowerPivot, PowerBI и запросы
=> Вопросы по Word и VBA
=> Вопросы по Outlook и VBA
=> Вопросы по Access и VBA
=> Вопросы по PowerPoint и VBA
=> Вопросы по Office для MAC
=> Вопросы по работе в Google-таблицах
=> Полезные решения
=> Баги и глюки при работе с Excel и VBA
=> Вопросы по OpenOffice и LibreOffice
=> Вопросы по надстройке MulTEx
=> Вопросы по MyAddin
=> Вопросы по бесплатным надстройкам
=> Вопросы по программам
-----------------------------
Прочие форумы
-----------------------------
=> Заказы на написание макросов, работа для специалистов по Excel и VBA и пр.
=> Курилка
-----------------------------
Удаленные темы и сообщения
-----------------------------
=> Список удаленных
Загружается...