我正在更新VBA程序(excel)。启动时,程序会检查是否可以使用以下命令查找office文件服务器上的目录:

FileSystemObject.FolderExists("\\servername\path")

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

这样可行,如果计算机可以到达路径,速度非常快,但是有时需要一段时间(最多一分钟)来调用FolderExists来完成/超时,尤其是在有网络连接的情况下打开但所需的路径不存在(即我们连接到其他局域网)。

我的问题:

  1. 是否有更快/更好的方法来检查是否存在使用VBA的网络路径?

  2. 有没有办法让用户取消由FolderExists()完成的搜索,因为他知道它不能成功,因为他们不在办公室。即有没有办法提前退出FolderExists()(或任何其他函数调用)

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

有帮助吗?

解决方案

如果您使用的是域名

检查LOGONSERVER环境变量。

如果服务器名称前面有两个'\'符号,则它连接到活动目录,因此您应该进行检查。

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

如果您不在域名中

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

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

MVPS.ORG MSDN论坛都有一些代码样本,

其他提示

我使用 Dir 命令,定位服务器上的共享文件夹,并在未找到时捕获错误。

Dir("\\Servername\aFolder\", vbDirectory)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top