Войти

Показать полную графическую версию : Добавить надстройку в Microsoft Excel


Страниц : [1] 2

c4uran
23-05-2018, 11:46
Задача такая

Нужен bat который добавит в Excel 2016 из файла макрос и запустит его

Условия:

Действует политика на отключение макросов из excel после перезагрузки
Раз в неделю за короткий срок необходимо на 30+ компах добавить макрос в excel
Удаленного доступа и админки к компьютерам нет, можно только запустить bat like приложение

Iska
23-05-2018, 12:09
c4uran, зачем добавлять макрос в Рабочую книгу? Каков код макроса?

c4uran
23-05-2018, 12:17
Макрос сложный там целое приложение для экономистов, это нужно для некоторых занятий

Просто чтобы ускорить процесс и как дурак при студентах не бегать и добавлять макрос хотелось бы этот момент ускорить

Да и суть в том чтобы добавить макрос не только в определенную книгу а в целом в excel

Iska
23-05-2018, 12:41
Тогда я вообще не понимаю, как именно связаны все перечисленные Вами понятия: политика, перезагрузка, добавление макроса, «в целом в Excel».

c4uran
23-05-2018, 13:07
Возможно это избыточная информация

Необходимо добавить макрос в excel (что бы запуская excel в нем отображался этот макрос)

Iska
23-05-2018, 14:09
c4uran, тогда я отвечу так: невозможно добавить макрос «в excel». Макрос можно добавить только в Рабочую книгу/Шаблон.

c4uran
23-05-2018, 14:32
Хорошо в таком случае я не правильно выразился и имею ввиду надстройку в excel

megaloman
23-05-2018, 14:39
c4uran, Я не знаю уровень ваших доступов к файлам. Поэтому на пальцах:
1. Делаю у себя новую чистую книгу с нужным макросом.
2. Последовательно:
- открываю новую чистую книгу;
- открываю на Ваших компьютерах книгу;
- импортирую, если нужно, имеющиеся там листы в Вашу чистую книгу;
- закрываю старый файл;
- сохраняю новый файл вместо старого; закрываю книгу.

Пункт 2 в цикле.
Наверное, реализуется на vbs.

А если это для студентов, то разве не надо просто скопировать одинаковые таблицы (или шаблоны) с правильным макросом на их машины, чтобы на занятии Вас понимали все одинаково? При этом никаких заморочек с обновлением макроса, импортом старых листов и т д
В любом случае права на запись у Вас должны быть.

c4uran
23-05-2018, 15:11
megaloman, я неправильно выразился, имел ввиду надстройку excel а не макрос, она автоматически удаляется каждый день и нужна только раз или два в неделю но на всех компьютерах

Iska
23-05-2018, 15:23
c4uran, Вы очень странно выражаетесь. Сделайте перечень скриншотов с описанием, либо запишите видео того, как Вы делаете это «ручками».

c4uran
24-05-2018, 10:24
Прошу прощение, сейчас попробую описать подробнее процесс который приходится делать руками на 30 компьютерах:

1. Запускаю Excel
2. Щелкаю в левый верхний угол на выпадающее меню файл
3. Там выбираю Параметры
4. В открывшемся меню Параметры Excel в списке слева выбираю Надстройки
5. В открывшемся меню снизу где написано Управление выбираю в выпадающем меню Надстройки Excel и правее нажимаю кнопку Перейти
6. В открывшемся меню Надстройки справа выбираю кнопку Обзор...
7. В открывшемся меню выбора файла выбираю файл надстройки в формате XLAM
8. Снова открывается меню Надстройки и там уже в списке доступных надстроек я ставлю галочку у имени надстройки которую только что добавил
9. Нажимаю Ок и меню Надстройки закрывается я оказываюсь в начальном экране с таблицей где среди верхних выпадающих меню ( файл, главная, вставка, итд появляется раздел - Надстройки
10. выбираю этот раздел и теперь могу запустить надстройку которую я добавил

megaloman
24-05-2018, 12:04
Удаленного доступа и админки к компьютерам нет, можно только запустить bat like приложение »То есть, на каждом компьютере ручками Вы хотите запустить что-то типа командного файла? Для такого случая вот .vbs -скрипт на примере надстройки "Поиск решения". With CreateObject("Excel.Application")
.Visible = True
' .Visible = False
.Workbooks.Add

.AddIns("Поиск решения").Installed = False
.AddIns.Add ("C:\Program Files\Microsoft Office\Office14\Library\SOLVER\SOLVER.XLAM")
.AddIns("Поиск решения").Installed = True

.ActiveWorkbook.Close
.Quit
End With
Его можно, наверное, разместить на общем ресурсе и запускать на каждой машине. Или поместить на каждой машине в автозагрузку.

Пропишите свои имена надстройки и xlam-файла.
Конечно, это сработает, если Office на всех машинах установлен одинаково и путь к надстройке одинаков.

Iska
24-05-2018, 12:16
c4uran, у Вас есть административные привилегии на машине? Где будет размещаться файл надстройки?

c4uran
24-05-2018, 12:43
Не подключает вываливает такую ошибку, прикладываю ошибку и саму надстройку

c4uran
24-05-2018, 12:44
Iska, надстройка лежит на диске С или в Документах

Iska
24-05-2018, 12:44
c4uran, ответьте на мои вопросы.

c4uran
24-05-2018, 12:46
Iska, простите пока долго отвечал вопросы еще не появились, прав админа на компьютерах нет

Iska
24-05-2018, 13:14
c4uran, тогда установка надстройки возможна только в режиме «на пользователя».

Попробуйте так:
Option Explicit

Dim strSourceFile
Dim strDestPath

Dim objFSO
Dim objFolder


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strSourceFile = objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "mc.xlam")

If objFSO.FileExists(strSourceFile) Then
Set objFolder = WScript.CreateObject("Shell.Application").NameSpace("shell:AppData")

If Not objFolder Is Nothing Then
strDestPath = objFolder.self.Path & "\Microsoft\AddIns"

If objFSO.FolderExists(strDestPath) Then
objFSO.CopyFile strSourceFile, strDestPath & "\", True

With WScript.CreateObject("Excel.Application")
.Workbooks.Add
.AddIns.Add(objFSO.BuildPath(strDestPath, objFSO.GetFileName(strSourceFile))).Installed = True
.Quit
End With
Else
WScript.Echo "Can't find destination folder [" & strDestPath & "]."
WScript.Quit 3
End If

Set objFolder = Nothing
Else
WScript.Echo "Can't parse [shell:AppData] special folder."
WScript.Quit 2
End If
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

Надстройка mc.xlam должна находиться рядом со скриптом. Она будет скопирована в профиль пользователя, а затем зарегистрирована.

c4uran
24-05-2018, 13:30
Iska, Работает спасибо, а такой вопрос почему реализация на vbs, cmd нельзя сделать подобный вызов?

Iska
24-05-2018, 13:40
c4uran, такую реализацию никак нельзя сделать на пакетных файлах — там нет поддержки Automation. Кроме WSH, аналогичное также можно проделать посредством PowerShell.

P.S. Исправьте заголовок темы на более соответствующее содержанию, наподобие «Добавить надстройку в Microsoft Excel», путём редактирования первого сообщения темы.




© OSzone.net 2001-2012