Board logo

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

作者: jsleee    時間: 2012-7-26 08:00     標題: 如何判斷區域網路內共用磁碟上的檔案已經被其他電腦開啟

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

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

JS
作者: jsleee    時間: 2012-8-8 21:57

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

JS
作者: jsleee    時間: 2012-9-15 08:50

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

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

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

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

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

這樣應該就可以達到你想要的效果了.
(若遇到當機或是 VBA 程式有錯誤而跳出, 那就是另外的處理方式了)
作者: jsleee    時間: 2012-9-18 21:56

回復 5# luhpro

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

JS
作者: jsleee    時間: 2012-9-19 21:54

回復 5# luhpro


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

TRY 看看

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

END SUB
作者: jsleee    時間: 2012-11-24 08:56

回復 8# tomking


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

JS
作者: joychiangg    時間: 2012-11-30 14:38

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

回復 10# joychiangg

謝謝 Joy 先進的回覆,雖然您的方法與我遇到的問題不太一樣,
不過您也提供了一個不同的思考方向,還是謝謝您

JS
作者: Jordan.Ou    時間: 2012-12-28 23:51

用 On Error Resume Next
作者: Jordan.Ou    時間: 2012-12-28 23:52

TRY 看看

SUB 1()
If Dir("E:\abc\aa\") = Empty Then   -->  
     
     Else
      MsgBox "程式 ...
tomking 發表於 2012-10-8 12:37



    這個用法應該只是在判斷檔案是否存在喔




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)