代码之家  ›  专栏  ›  技术社区  ›  Loopo

检查局域网环境并取消检查

  •  1
  • Loopo  · 技术社区  · 17 年前

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

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

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

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

    我的问题:

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

    2. 有没有办法让用户取消folderexists()的搜索,因为他们不在办公室,他知道搜索无法成功。也就是说,是否存在提前退出folderExists()的方法(或任何其他函数调用)

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

    2 回复  |  直到 8 年前
        1
  •  3
  •   Kevin Fairchild    17 年前

    如果您在域中:

    检查LogonServer环境变量。

    如果服务器名称前有两个'\'符号,则表明它已连接到Active Directory,因此应进行检查。

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

    如果您不在域中:

    也许您最好的选择是对目标服务器运行ping。

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

    MVPS.ORG MSDN Forums 两者都有一些代码示例,

        2
  •  0
  •   Daniel    13 年前

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

    Dir("\\Servername\aFolder\", vbDirectory)