Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不显示工作簿的情况下触发/初始化Excel VB用户窗体?_Excel_Vba_Userform - Fatal编程技术网

如何在不显示工作簿的情况下触发/初始化Excel VB用户窗体?

如何在不显示工作簿的情况下触发/初始化Excel VB用户窗体?,excel,vba,userform,Excel,Vba,Userform,我创建了一个excel vba工具,它利用userforms为用户创建购物体验。一旦用户打开该工具,他将能够从用户表单中选择订单。然后,代码处理订单并返回计算出的估计成本 问题是我不想让用户看到工作簿(以及其中的工作表)。我需要在没有任何弹出窗口的情况下隐藏活动工作簿 我最近使用了下面的解决方案,但是,我发现在用户初次启动时,他遇到了“安全警告”宏已被禁用。启用内容(按钮)”,这使得初始解决方案毫无价值。任何建议都将不胜感激。蒂亚 ActiveWorkbook.Windows(1).Visibl

我创建了一个excel vba工具,它利用userforms为用户创建购物体验。一旦用户打开该工具,他将能够从用户表单中选择订单。然后,代码处理订单并返回计算出的估计成本

问题是我不想让用户看到工作簿(以及其中的工作表)。我需要在没有任何弹出窗口的情况下隐藏活动工作簿

我最近使用了下面的解决方案,但是,我发现在用户初次启动时,他遇到了“安全警告”宏已被禁用。启用内容(按钮)”,这使得初始解决方案毫无价值。任何建议都将不胜感激。蒂亚

ActiveWorkbook.Windows(1).Visible = False

您可以在excel工作簿的信任中心为特定工作簿永久启用宏。因此,每当用户打开工作簿时,他/她无需每次按下按钮即可激活任何与宏相关的内容


在您的情况下,您希望选择:
启用所有宏(不推荐;可能会运行潜在危险的代码)

忘记提及明显的错误

XLAM

将您的书另存为xlam。将它放在加载项文件夹中(或明确指向它),并通过Excel界面选择它

默认情况下,加载项不可见

您仍然需要管理安全警告,坦率地说,这是一个用户担心的问题,您可能会被迫解决,这是一个永远不会消失的问题


我不会说这是“好”的建议,原则上你可能会嘲笑或拒绝这个想法,但如果你没有合法的方式签署你的项目,考虑在用户计算机上安装个人证书并在本地签署项目或通过进程远程步行用户

的可能性。我不知道VBA有什么方法来抑制安全警告。也许如果您在Outlook中运行了代码,那么您可能能够在Excel中安静地处理警告,但我相当怀疑,这肯定取决于“通常”超出您控制的特定用户设置。VBA运行在宿主应用程序(在本例中为Excel)中。如果你不需要一个主机,考虑写一个独立的应用程序在VB.NET或C不需要主机,所以就不需要假装没有主机。有没有方法可以指定我可以运行宏的工作簿?这样,任何用户都会感到更安全,而不是默认启用所有宏。您可以对工作簿进行数字签名。请参考这篇文章:Wonderfull。我会检查的。我计划将我创建的工具存储在一个共享驱动器中,供网络中的每个人使用。我从来没有签署过一个项目,也许我应该调查一下。