Отключить макросы Excel при непосредственном запуске - PullRequest
0 голосов
/ 29 мая 2019

Я сталкиваюсь с ошибкой в ​​моем текущем проекте.

Это требования проекта:

Клиент имеет файл xlsm excel с макросами. Клиент хочет, чтобы этот макрос был доступен, только если он был открыт моим разработанным приложением.

Итак, я попробовал это:

а) Я защищаю файл паролем и открываю с помощью следующего кода:

objEApp = Activator.CreateInstance(System.Type.GetTypeFromProgID("Excel.Application"))
objEApp.Workbooks.Open(strExcelFile, password:="excelpassword")
objEApp.Visible = True
objEApp = Nothing

б) и поставил другую функцию и с помощью сторонней библиотеки удаляю макросы из файла excel и сохраняю как версию клиента (другой файл).

но клиент не доволен этим как:

  1. создает два файла Excel: один для полной версии защищен паролем, другой - для клиентской версии.
  2. он также не хочет, чтобы файл excel защищался паролем.
  3. он хочет, чтобы это было очень просто

a) если пользователь открывает файл Excel напрямую (двойной щелчок или открывается через Excel), то макросы VBA не будут работать / работать.

b) если пользователь откроет файл excel моим программным обеспечением, то он будет работать с этими макросами.

итак, у меня сейчас нет идей. Я не могу понять, как это вообще возможно?

хотя, у меня есть идея ... но я не могу найти способ ее реализовать.

например, я поместил глобальную логическую переменную в макрос-скрипты, например, bolAppRun Macro со значением по умолчанию false.

и когда этот файл открывается с помощью моего программного обеспечения, мое программное обеспечение просто устанавливает для логического значения значение true. так что этот макрос будет работать. однако, когда пользователь сохраняет файл Excel, это логическое значение не будет сохранено.

что-то вроде:

objEWorkBook = objEApp.Workbooks.Open(strExcelFile, password:="excelpassword")
objEWorkBook.bolAppRun = true;

любая идея для достижения моей идеи .. или у вас есть идея получше.

спасибо заранее С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...