返回列表 上一主題 發帖

[發問] 如何判斷區域網路內共用磁碟上的檔案已經被其他電腦開啟

[發問] 如何判斷區域網路內共用磁碟上的檔案已經被其他電腦開啟

請教先進
        如果我的程式需要更新區域網路內共用磁碟上的檔案,
        但是該檔案可能會有其他人會開啟使用,
        有沒有辦法在開啟檔案之前,先判斷該檔案是否已經開啟?
        不知道這樣的VBA程式碼該如何寫,
       希望有先進可以指點一下,謝謝
JS

請問各位先進
    不知道這樣的問題是否無解?
    還是我描述不夠清楚???

JS

TOP

都沒有大大回應,是因為這個問題本身就無解嗎?
還是因為問題說明不夠清楚???
能否有人回應提供方向,感激不盡....

JS

TOP

因為都沒有人有任何回應,可能是我表達得不太清楚,所以我再說明問題一次
請教先進
         如果我的程式需要 去更新公司內區域網路內共用磁碟上的Excel檔案,
         但是該檔案平時可能會有其他人會開啟編輯使用,
         有沒有辦法在程式開啟該 Excel 檔案之前,先判斷該檔案是否已經被其他的電腦所開啟?
         不知道這樣的VBA程式碼該如何寫,
        希望有先進可以指點一下,謝謝
JS

TOP

本帖最後由 luhpro 於 2012-9-16 19:46 編輯
因為都沒有人有任何回應,可能是我表達得不太清楚,所以我再說明問題一次
請教先進
         如果我的程式 ...
jsleee 發表於 2012-9-15 08:50

這或許可以利用錯誤處理程式的方式來處理,
不過我不會.

我另外想到一個比較簡單的辦法:
只要在開啟該檔案時, (要放在與該 Excel 檔案同一目錄上以便所有人存取)
對一個固定的文字檔案寫入使用者名稱,(或其他可辨識該檔案已被開啟的文字敘述或符號)
再於關閉Excel檔案時,
對該檔案寫入 None 之類的文字.

而若是另一人嚐試要開啟該檔案,
則因檢查到文字檔內容得知已被開啟,
就可不接受其開啟的要求.
(當然 VBA 所在檔案不能與欲開啟檔案相同)

這樣應該就可以達到你想要的效果了.
(若遇到當機或是 VBA 程式有錯誤而跳出, 那就是另外的處理方式了)

TOP

回復 5# luhpro

謝謝 luhpro 前輩指點...
我大概有一個方向了,我再嘗試看看
謝謝

JS

TOP

回復 5# luhpro


    謝謝 luhpro 先進的指點,雖然我並非完全使用您所指點的方法,不過類似的意思...
    因為目前使用 Office 2010的版本,只要檔案被開啟編輯中,則同一個目錄中 就會出現 ~$檔名 的暫存檔
    所以 我就用 該暫存檔案存在與否 作為判斷,一樣可以達到效果,目前問題已經解決了
    再次謝謝您.....
JS

TOP

TRY 看看

SUB 1()
If Dir("E:\abc\aa\") = Empty Then   -->  
     
     Else
      MsgBox "程式運轉中,不能更新"
      Exit Sub
   End If

END SUB

TOP

回復 8# tomking


    還沒測試,不過還是感謝 tomking 先進的指導...
    謝謝

JS

TOP

我不會寫vba,以下方式是我用的,供您參考:
1、將檔案設為共用活頁簿,讓各區自行編輯屬於他們的工作表。
2、或是讓需至該檔案編輯的人員,請他們在自行的excel  / 工具 / 選項 / 一般 / 使用者名稱 內,輸入自己的代號或名字。
若a在獨佔模式下已在編輯該檔案,b 再去開啟該檔案時,會出現該檔案已由a編輯中。
Joy

TOP

        靜思自在 : 生氣,就是拿別人的過錯來懲罰自己。
返回列表 上一主題