检查LAN环境并取消检查



我正在更新VBA程序(excel)。启动时,程序检查是否可以使用在办公室文件服务器上找到一个目录

FileSystemObject.FolderExists("\servernamepath")

如果没有找到,程序将切换到脱机模式,并将其输出保存到本地硬盘(以便稍后传输),而不是直接保存到文件服务器。

这工作正常,如果计算机能够到达该路径,它会很快,但有时对FolderExists的调用可能需要一段时间(最多一分钟)才能完成/超时,特别是如果有网络连接打开,但所需的路径不存在(即,我们连接到其他LAN)。

我的问题:

  1. 有没有一种更快/更好的方法可以使用VBA检查网络路径的存在?

  2. 当用户知道由于不在办公室而无法成功时,有没有办法让用户取消FolderExists()进行的搜索。也就是说,有没有办法提前退出FolderExists()(或任何其他函数调用)

我希望该解决方案的用户输入尽可能少,这就是为什么检查是自动完成的,而不仅仅是询问用户是否在办公室。

如果您在域上:

检查LOGONSERVER环境变量。

如果服务器名称前面有两个"\"符号,则表示它已连接到active directory,因此您应该进行检查。

否则,它不会登录到办公网络,因此您可以绕过检查。

如果您不在域上:

也许你最好的办法是对目标服务器运行ping。

如果它无法获得ping响应,则说明它未连接到网络,未连接到您的网络,或者服务器已关闭。在这种情况下,您不希望代码以任何一种方式运行。

MVPS.ORG和MSDN论坛都有一些代码示例,

我使用Dir命令,以服务器上的共享文件夹为目标,并在找不到错误时捕获错误。

Dir("\ServernameaFolder", vbDirectory)

相关内容

  • 没有找到相关文章

最新更新