2008-10-30 66 views
1

我正在更新VBA程序(excel)。在啓動程序檢查它是否能夠找到一個目錄這是在使用了辦公文件服務器:VBA如何檢查局域網環境並取消檢查

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

如果沒有找到該程序切換到離線模式,將其輸出保存到本地硬盤(後來轉移),而不是直接到文件服務器。

這工作正常,如果計算機可以到達路徑,則速度非常快,但有時可能需要一段時間(最長一分鐘)才能調用FolderExists以完成/超時,特別是在有網絡時連接打開,但所需的路徑不存在(即我們連接到其他局域網)。

我的問題(S):

  1. 是有一個更快/更好的方法來檢查使用VBA網絡路徑的存在?

  2. 有沒有辦法讓用戶取消由FolderExists()完成的搜索,當他知道由於他們不在辦公室而無法成功時,他會執行搜索。即有沒有我想要的解決方案有儘可能少的用戶輸入成爲可能,這就是爲什麼檢查是自動完成的一些方法來提前退出FolderExists()(或任何其他函數調用爲此事)

,而而不僅僅是詢問用戶他是否在辦公室或者不在首位。

回答

3

如果你在一個領域:

檢查LOGONSERVER環境變量。

如果服務器名稱前有兩個'\'符號,它將連接到活動目錄,因此您應該執行檢查。

否則,它不會登錄到辦公室網絡,因此您可以繞過檢查。

如果你不是一個域:

可能是你最好的選擇是對運行在目標服務器的ping。

如果它無法獲得ping響應,它可能是未連接到網絡,未連接到您的網絡或服務器已關閉。在這種情況下,您不希望代碼以任何方式運行。

MVPS.ORGMSDN Forums都有一些代碼示例爲,

+0

問題是我們沒有使用活動目錄。這只是一堆PC和筆記本電腦以及一個桑巴服務器。 'echo%LOGONSERVER%'返回'\\ ' – Loopo 2008-10-30 14:20:35

0

我使用Dir命令,在服務器上的目標共享文件夾和捕捉錯誤時未找到。

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