MyTetra Share
Делитесь знаниями!
Включение макросов в Microsoft Office 2003 - 2013
30.12.2017
22:21
Раздел: VBScript

Включение макросов в Microsoft Office 2003 - 2013
Автор скрипта: Dragokas
Версия: v.1.3 (31.08.2016)
Совместимость: Windows XP, Vista, Seven, 8. (x32, x64)
Office 2000, XP, 2003, 2007, 2010, 2013 (x32, x64).

  • Завершите все офисные приложения.
  • После запуска батника выберите цифру и нажмите ENTER:

1 - Запуск макросов без уведомления.
2 - Запуск макросов с разрешения пользователя.
3 - Запретить запуск неподписанных макросов (не уведомлять).

Рекомендуется выбирать 2.

Макросы включаются/отключаются одновременно во всех установленных приложениях:
- Word
- Excel
- OutLook
- Access
- PowerPoint

Код (DOS):

@echo off
:: Macros Access Script by Alex Dragokas
echo.
echo Утилита включения макросов для MS Office 2003-2013
echo.
:ch_Security
echo Введите цифру и нажмите кнопку ENTER:
echo.
echo 1 - Запуск макросов без уведомления.
echo 2 - Запуск макросов с разрешения пользователя.
echo 3 - Запретить запуск неподписанных макросов (не уведомлять).
echo.
set ch=
set /p "ch=Ваш выбор: "
echo.
if "%ch%"=="1" set "MacrosLevel=1"
if "%ch%"=="2" set "MacrosLevel=2"
if "%ch%"=="3" set "MacrosLevel=3"
if "%ch%" neq "1" if "%ch%" neq "2" if "%ch%" neq "3" goto ch_Security
:ch_VBA
echo Хотите включить программный доступ к коду макроса?
echo.
echo 1 - Да. Разрешить.
echo 2 - Нет. Запретить.
echo.
set ch=
set /p "ch=Ваш выбор: "
echo.
if "%ch%"=="1" set "ProjectLevel=1"
if "%ch%"=="2" set "ProjectLevel=0"
if "%ch%" neq "1" if "%ch%" neq "2" goto ch_VBA

:: Проверяю, запущен ли хоть один из процессов MS Office

:Check
call :CheckRun || (echo.& echo НЕЛЬЗЯ продолжить. Сначала нужно завершить все офисные приложения.& echo.& pause & echo.& goto Check)

For %%k in (
  HKCU\Software\Microsoft\Office
  HKCU\Software\Wow6432Node\Microsoft\Office
) do (
  For /F "tokens=5 delims=\" %%a in ('reg query "%%k" 2^>NUL ^| findstr /R "^.*\\[0-9].*"') do (
    if "%%a" neq "8.0" (
      if "%%a"=="9.0"  (echo Обнаружен MS Office 2000 & call :EnumApps 2003 "%%a")
      if "%%a"=="10.0" (echo Обнаружен MS Office XP   & call :EnumApps 2003 "%%a")
      if "%%a"=="11.0" (echo Обнаружен MS Office 2003 & call :EnumApps 2003 "%%a")
      if "%%a"=="12.0" (echo Обнаружен MS Office 2007 & call :EnumApps 2007 "%%a")
      if "%%a"=="13.0" (echo Обнаружен MS Office 2010 & call :EnumApps 2007 "%%a")
      if "%%a"=="14.0" (echo Обнаружен MS Office 2010 & call :EnumApps 2007 "%%a")
      if "%%a"=="15.0" (echo Обнаружен MS Office 2013 & call :EnumApps 2007 "%%a")
      if not Defined isChanges (echo Обнаружена неизвестная версия MS Office & call :EnumApps 2007 "%%a")
      echo.
    )
  )
)
pause
exit /B

:EnumApps %1-mso.family %2-key.version
  Set "isChanges=true"
  For %%k in (
    HKCU\Software\Microsoft\Office\%~2
    HKCU\Software\Wow6432Node\Microsoft\Office\%~2
  ) do (
    For /F "tokens=6 delims=\" %%a in ('reg query "%%k" 2^>NUL') do (
      if /i "%%a"=="Word" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="Excel" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="PowerPoint" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="Access" call :ChangeSecurity "%~1" "%~2" "%%a"
      if /i "%%a"=="Outlook" call :ChangeSecurity "%~1" "%~2" "%%a"
    )
  )
Exit /B

:ChangeSecurity %1-mso.family %2-key.version %3-Application
  echo %~3
  if "%~1"=="2003" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v Level /t REG_DWORD /d %MacrosLevel% /f
  if "%~1"=="2007" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v VBAWarnings /t REG_DWORD /d %MacrosLevel% /f
  if /i "%~3" neq "Outlook" if "%~2" neq "9.0" reg add "HKCU\Software\Microsoft\Office\%~2\%~3\Security" /v AccessVBOM /t REG_DWORD /d %ProjectLevel% /f
Exit /B

:CheckRun
  TASKLIST /FI "imagename eq winword.exe" | find /i "winword.exe" && exit /B 1
  TASKLIST /FI "imagename eq excel.exe" | find /i "excel.exe" && exit /B 1
  TASKLIST /FI "imagename eq powerpnt.exe" | find /i "powerpnt.exe" && exit /B 1
  TASKLIST /FI "imagename eq outlook.exe" | find /i "outlook.exe" && exit /B 1
  TASKLIST /FI "imagename eq msaccess.exe" | find /i "msaccess.exe" && exit /B 1
Exit /B 0

Инструкция, как включить макросы вручную.

Прикрепленные файлы:
Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования