我想限制Excel工作表仅在我的组织网络内打开。如果我的系统连接到公司的Internet,则只能打开它。如果系统未连接到Internet或连接到外部网络,则不能打开它。
我正在使用宏为此.我已经使用了下面的代码到目前为止,发现这对堆栈溢出的另一个答案.这段代码是在不同的连接网络的系统给出相同的值.这将只工作,如果系统是不同的.但不是为不同的网络.
Option Explicit
Enum COMPUTER_NAME_FORMAT
ComputerNameNetBIOS
ComputerNameDnsHostname
ComputerNameDnsDomain
ComputerNameDnsFullyQualified
ComputerNamePhysicalNetBIOS
ComputerNamePhysicalDnsHostname
ComputerNamePhysicalDnsDomain
ComputerNamePhysicalDnsFullyQualified
End Enum
Declare Function GetComputerNameEx Lib "kernel32" Alias "GetComputerNameExA"
( _
ByVal NameType As COMPUTER_NAME_FORMAT, _
ByVal lpBuffer As String, _
ByRef lpnSize As Long) As Long
Sub test()
Dim buffer As String
Dim size As Long
size = 255
buffer = Space(size)
GetComputerNameEx ComputerNameDnsFullyQualified, buffer, size
Debug.Print Left$(buffer, size)
End Sub
1条答案
按热度按时间gcuhipw91#
即使你的帖子中没有任何问题,我也会回复你的,除非你编辑它来添加关于一个特定的编程相关问题的信息,沿着例子,你尝试过的细节,和一个实际的问题,否则它可能会被关闭。
简短的回答是:
不可能的。
任何真正想访问您的工作簿(或任何其他Office文档)的人都可以快速进行谷歌搜索,以绕过您添加的任何安全“功能”。
AUTO_OPEN
宏和On Open
事件可以通过在打开时按住Shift键或不信任其信任中心中的宏来轻松绕过。(Here是Google搜索该主题的第一个结果。)密码可以在几分钟内破解使用免费软件实用程序或手动只有几个步骤。
如果你关心的人不是电脑高手,我想你可以让工作簿 * 默默地 * 通知你它正在打开的位置(例如,IP address或computer name)),但是,再一次,这些可以被伪造或完全绕过。
假设问题是担心员工将工作簿(或其中包含的数据)用于“未经批准的目的”,理想的解决方案是start trusting your staff,或者如果不可能,you need to fire them并找到你信任的人。
* 编辑:* 绕过Workbook_Open
下面是一个包含
Workbook_Open
事件的工作簿的示例,首先正常打开,然后以稍微不同的方式打开工作簿:编辑:禁止任何代码运行
作为一名开发人员,我经常降低或关闭宏安全设置。然而,默认安装已启用安全性,即使禁用了安全性,也不难重新启用安全性:
您不能强制代码运行或以编程方式绕过安全性。
任何你认为你可以做的或找到的或做的强迫代码在没有用户同意的情况下执行的事情都不会起作用,至少会有一个解决方案。
为什么
将其与病毒扫描程序软件进行比较。
**想象一下,如果代码能够禁用您的病毒扫描程序会发生什么?**这将使所有病毒扫描程序永远完全无用。如果可能的话,病毒创建者会定期这样做。
VBA宏安全选项也是如此:如果可以通过编程绕过它,那么“选项”就没有任何意义,甚至不会被包括在内。这是个安全问题