我正在更新VBA程序(excel)。启动时,程序会检查是否可以使用以下命令查找office文件服务器上的目录:
FileSystemObject.FolderExists("\\servername\path")
如果找不到,程序将切换到离线模式并将其输出保存到本地硬盘(以便以后传输),而不是直接保存到文件服务器。
这样可行,如果计算机可以到达路径,速度非常快,但有时需要一段时间(最多一分钟)来调用FolderExists来完成/超时,尤其是在有网络连接的情况下打开但所需的路径不存在(即我们连接到其他局域网)。
我的问题:
是否有更快/更好的方法来检查是否存在使用VBA的网络路径?
有没有办法让用户取消由FolderExists()完成的搜索,因为他知道它不能成功,因为他们不在办公室。即有没有办法提前退出FolderExists()(或任何其他函数调用)
我希望解决方案尽可能少的用户输入,这就是为什么检查是自动完成的,而不是仅仅询问用户他是否在办公室。
答案 0 :(得分:3)
如果您使用的是域名
检查LOGONSERVER环境变量。
如果服务器名称前面有两个'\'符号,则它已连接到活动目录,因此您应该进行检查。
否则,它不会登录办公室网络,因此您可以绕过检查。
如果您不在域名中
可能你最好的办法是对目标服务器运行ping。
如果无法获得ping响应,则表明它未连接到网络,未连接到您的网络或服务器已关闭。在这种情况下,您不希望代码以任何一种方式运行。
MVPS.ORG和MSDN Forums都有一些代码示例,
答案 1 :(得分:0)
我使用Dir
命令,定位服务器上的共享文件夹,并在未找到时捕获错误。
Dir("\\Servername\aFolder\", vbDirectory)