直接运行时禁用Excel宏

时间:2019-05-29 11:02:24

标签: excel vba vb.net

我在当前项目中遇到错误。

这是项目要求:

客户端具有带有宏的xlsm excel文件。 客户希望该宏仅在由我开发的应用程序打开时才可用。

所以,我已经尝试过了:

a)我用密码保护文件并使用以下代码打开:

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

b)并放置另一个功能,并在第三方库的帮助下,我从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;

实现我的主意的任何主意。或者您有更好的主意。

先谢谢 最好的问候

0 个答案:

没有答案