【问题标题】:Creating private intance of excel for app为应用程序创建私有 excel 实例
【发布时间】:2016-10-30 07:30:50
【问题描述】:

我正在使用 Excel 制作一个应用程序,所有用户交互都发生在用户表单中。我希望我的应用程序在单独的 excel 实例中运行,而不是在我的应用程序运行时已打开的任何其他文件或用户手动打开的任何文件中运行。我发现以下链接是相关且有趣的,但我不确定如何在我的应用程序中实现它:Answers.microsoft.com Can I create an instance of Excel that can only be accessed by my VBA project?

这是我想实现的方式:

我使用两个文件:StartFile.xlsb、SystemFile.xlsb

  1. 用户通过单击文件正常打开 StartFile
  2. 如果未启用宏,StartFile 的Sheet1 会显示警告。
  3. 启用宏后,StartFile 会检查 excel 版本等...
  4. 如果 StartFile 一切正常,则在新的 excel 实例中打开 SystemFile,然后自行关闭
  5. SystemFile 打开并以某种方式将其 excel 实例设为私有(使用“Application.IgnoreRemoteRequests = True”?)

澄清:用户将无法与私有 excel 实例应用程序进行交互。它的 .visible 设置将保持为假。它用于显示用户表单,因此对用户来说这看起来像是一个独立的应用程序

旁注:无论宏安全设置如何,如何确保我的新 excel 实例启用了宏? (用户已经启用了一次宏)(到目前为止我还没有注意到这种情况,是吗?)

【问题讨论】:

  • 我建议您考虑使用一些不受宏限制影响的技术。 HTA 与 JScript/VBScript(VBScript 与 VBA 最相似)或 WinForms 与 C#/VB.NET(WinForms 模型类似于 VBA UserForms 模型)是首先想到的可能性。
  • 您无法确保宏已启用,也无法更改该限制的设置。许多公司(和智能用户)有意在全局范围内禁用宏,您的应用程序无法强制它们更改。这是依赖与您的完全不同的应用程序来实现您的主要功能的缺点。如果您希望能够控制您的应用可以做什么和不可以做什么,请编写您自己的代码。

标签: vba excel userform


【解决方案1】:

您正在寻找这样的东西吗?

您不能更改宏安全设置,因为这会破坏拥有这些设置的整个目的。或者,您可以正确搜索 VBA 模块来更改 Windows 注册表。

此外,如果您使用IgnoreRemoteRequests,请小心,那么您每次都必须重新设置它。

** 已编辑 ** 隐藏 SystemFile 工作簿并只显示用户表单?然后在用户窗体关闭时关闭 SystemFile 工作簿。

Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show
End Sub

'UserForm module
Private Sub CommandButton1_Click()
Unload UserForm1
Application.Quit
End Sub

【讨论】:

  • 承认得太快了。更新了答案。
  • 还是不行。再读一遍。 :-)
  • 他想从他现有的工作簿中打开 SystemFile。当该工作簿打开时,他想关闭现有工作簿,以便 SystemFile 是唯一打开的工作簿。在 SystemFile 中,他有一个用户窗体应该对用户可见,但是,工作簿不应该。我不明白为什么需要在“私人”实例中打开它,而您可以隐藏工作簿并显示用户表单,这意味着用户无论如何都无法与工作簿交互。
  • IgnoreRemoteRequests你可以用它来
  • 无论您是否看到原因,问题都会询问有关创建 Excel 的私有实例的问题。您的答案没有显示如何创建 Excel 的私有实例;它也没有解释为什么这样的事情是不可能的任何正当理由。因此,您的帖子没有回答所提出的问题。
猜你喜欢
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2016-09-22
  • 1970-01-01
相关资源
最近更新 更多