Board logo

標題: [發問] 如何得知 A.xls恰巧有別人在使用??? [打印本頁]

作者: yangjie    時間: 2014-6-25 23:16     標題: 如何得知 A.xls恰巧有別人在使用???

又有一嘗試,請教專家大大們協助突破
因情事需要,輸入者眾 且不同地點
將資料夾(出缺勤獎懲登錄)置於  "網路芳鄰"中 供眾導師們各自登錄
1.資料夾含(1登錄.xls,1資料庫.xls,2登錄.xls,2資料庫.xls,------,總管理.xls,總資料庫.xls)
2.平時(導師1) (開1登錄.xls 登錄後 傳回1資料庫.xls )---1資料庫.xls 只在霎那open,close
           (導師2) (開2登錄.xls 登錄後 傳回2資料庫.xls )---2資料庫.xls 只在霎那open,close----
3.主任開總管理.xls,欲作總資料庫.xls向1資料庫.2資料庫.---取回資料(也是極短時間5秒)
以上均完成VBA處理
問題如下
導師與主任   若在  存取之間  霎那  恰巧同時   就出現 error
就教於大大先進
    1號人先開A.xls  尚未 .close前  2號人也要打開A.xls  
2號人如何得知 A.xls恰巧有別人在使用???
此時如何叫電腦暫停20秒再動作??
如此說明  希望能了。
請求救援!謝謝
作者: c_c_lai    時間: 2014-6-26 04:16

回復 1# yangjie
你可以另外增加一個小檔案 (文字檔、亦或是資料庫),
作為開啟關閉的控制與管理 (Key File) (置於執行區)。
於開啟 EXCEL 檔案時,在一進入同時先交由
Private Sub Workbook_Open() 判斷上述之小檔案
內容為何 ?
(譬如: 1 - 為真,表示已有人開啟,隨即跳離關閉 EXCEL。
            或出示訊息告知『別人在使用中』等提示。
        0 - 為否,表示無人進入,順手將它修正為 1 並隨即
            予以存檔關閉(Key File),以供他人再開啟檢視。
            在關閉 EXCEL 離開前,則再將它的內容修正為 0。)
如此便可達到你所需之控管了。
作者: GBKEE    時間: 2014-6-26 07:03

本帖最後由 GBKEE 於 2014-6-26 10:53 編輯

回復 1# yangjie


可參考這裡

使 A.xls 為共用活頁簿
  1. Option Explicit
  2. Sub Ex()
  3.    Dim users, A
  4.    users = Workbooks("共用.xls").UserStatus
  5.    A = Application.WorksheetFunction.Index(Application.WorksheetFunction.Transpose(users), 1)
  6.    MsgBox "Users : " & UBound(users) & vbLf & Join(A, vbLf)
  7. End Sub
複製代碼
[attach]18561[/attach]
作者: yangjie    時間: 2014-6-26 23:44

回復 3# GBKEE
請教GBKEE
有無辦法在A.xls內用VBA 使 B.xls成為共用活頁簿可供多人使用狀態
作者: yangjie    時間: 2014-6-27 00:06

回復 2# c_c_lai
請教大大
可幫忙示範一下
作者: yangjie    時間: 2014-6-27 00:10

回復 3# GBKEE
請教GBKEE
可否  傳回  共用人數(傳回人數n)?
這樣可利用n<2即可繼續-----
作者: c_c_lai    時間: 2014-6-27 08:12

回復 5# yangjie
這篇文章對你應該會有所幫助的:
Who open VBA Excel 2003/WinXP
作者: GBKEE    時間: 2014-6-27 19:53

回復 6# yangjie


   
共用人數(傳回人數n)?
3# 的程式碼,就是啊.
  1. Option Explicit
  2. Const ExFile = "D:\AA.XLS"
  3. Private Sub 設為共用活頁簿()
  4.     Application.DisplayAlerts = False
  5.     With Workbooks.Open(ExFile)
  6.         If Not .ReadOnly And Not .MultiUserEditing Then
  7.             'ReadOnly 屬性          如果物件是以唯讀模式開啟,則傳回 True。唯讀 Boolean
  8.             'MultiUserEditing 屬性  如果活頁簿是以共用清單模式開啟的則為 True。唯讀 Boolean。
  9.             .SaveAs Filename:=.FullName, AccessMode:=xlShared       '存檔為共用模式
  10.             .AutoUpdateFrequency = 5    'AutoUpdateFrequency 屬性   設定以分鐘為單位傳回或設定對共用活頁簿進行自動更新的時間間隔。讀/寫 Long。
  11.             .ChangeHistoryDuration = 30 'ChangeHistoryDuration 屬性 設定共用活頁簿的修訂記錄中所要顯示修訂資訊的天數。讀/寫 Long
  12.         End If
  13.         .Close True
  14.     End With
  15.     Application.DisplayAlerts = True
  16. End Sub
  17. Private Sub 取消設為共用活頁簿()
  18.     Application.DisplayAlerts = False
  19.     With Workbooks.Open(ExFile)
  20.       If Not .ReadOnly And .MultiUserEditing Then .ExclusiveAccess
  21.         'Not .ReadOnly:沒有人開啟這檔案
  22.         '.MultiUserEditing :是共用活頁簿
  23.         .Close True
  24.     End With
  25.     Application.DisplayAlerts = True
  26. End Sub
複製代碼

作者: yangjie    時間: 2014-6-29 12:19

回復 8# GBKEE
感謝GBKEE版大    學習頗多  也解決嘞困惑




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