我在当前项目中遇到错误。
这是项目要求:
客户端具有带有宏的xlsm excel文件。 客户希望该宏仅在由我开发的应用程序打开时才可用。
所以,我已经尝试过了:
a)我用密码保护文件并使用以下代码打开:
objEApp = Activator.CreateInstance(System.Type.GetTypeFromProgID("Excel.Application"))
objEApp.Workbooks.Open(strExcelFile, password:="excelpassword")
objEApp.Visible = True
objEApp = Nothing
b)并放置另一个功能,并在第三方库的帮助下,我从excel文件中删除了这些宏,并另存为客户端版本(另一个文件)。
但是客户对此不满意:
a)如果用户直接打开excel文件(双击或通过excel打开),则VBA宏将不存在/起作用。
b)如果用户通过我的软件打开excel文件,则它将与这些宏一起使用。
所以,我现在没主意了。我不知道那怎么可能?
尽管,我有一个主意..但是找不到实现它的方法。
例如,我在宏脚本上放置了一个全局布尔变量,例如bolAppRun Macro,默认值为false。
,并且通过我的软件打开此文件时,我的软件只是将布尔值设置为true。因此,该宏将起作用。但是,当用户保存excel文件时,布尔值将不会被保存。
类似:
objEWorkBook = objEApp.Workbooks.Open(strExcelFile, password:="excelpassword")
objEWorkBook.bolAppRun = true;
实现我的主意的任何主意。或者您有更好的主意。
先谢谢 最好的问候