如何判斷 server 上的 excel 檔案被開啟
- 帖子
- 29
- 主題
- 8
- 精華
- 0
- 積分
- 58
- 點名
- 0
- 作業系統
- WinXP
- 軟體版本
- office2003
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2015-3-2
- 最後登錄
- 2015-6-1
|
如何判斷 server 上的 excel 檔案被開啟
有人可以解答一下, 要如何判斷 server 上的 excel 檔案被開啟
原因是因為如 server 上的 excel被別人開啟後,
要判斷是否能將資料存入到 server 上的 excel 檔案
若被別人開啟, 則跳出 message 通知 檔案己被開啟, 並放棄存檔
excel VBA 可以做的到嗎? |
|
|
|
|
|
|
- 帖子
- 65
- 主題
- 0
- 精華
- 0
- 積分
- 64
- 點名
- 0
- 作業系統
- Windows XP
- 軟體版本
- Office 2003
- 閱讀權限
- 20
- 註冊時間
- 2011-11-10
- 最後登錄
- 2019-2-27
|
2#
發表於 2015-4-2 17:44
| 只看該作者
目前原本就會自動就會判斷呀 , 如果有人開啟, 就只能用唯讀打開
如果要自己打造, 就產生個 lock file 去供判斷就好了 |
|
|
|
|
|
|
- 帖子
- 29
- 主題
- 8
- 精華
- 0
- 積分
- 58
- 點名
- 0
- 作業系統
- WinXP
- 軟體版本
- office2003
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2015-3-2
- 最後登錄
- 2015-6-1
|
4#
發表於 2015-4-3 23:09
| 只看該作者
想請問 GBKEE 版主
底下有些不太懂, 可以解答一下嗎
Sub SetAttribue()
Dim strFile As String
strFile = "c:\temp\test.xlsx"
If Not IsWorkBookOpen(strFile) Then
SetAttr strFile, vbReadOnly ' 不太懂這邊的意思
MsgBox "file now readonly"
Else
MsgBox "File is already open"
End If
End Sub
Function IsWorkBookOpen(FileName As String) As Boolean
Dim ff As Long
Dim ErrNo As Long
On Error Resume Next
ff = FreeFile() ' 不懂語法
Open FileName For Input Lock Read As #ff ' 不懂 #ff 意思
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function |
|
|
|
|
|
|
- 帖子
- 29
- 主題
- 8
- 精華
- 0
- 積分
- 58
- 點名
- 0
- 作業系統
- WinXP
- 軟體版本
- office2003
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2015-3-2
- 最後登錄
- 2015-6-1
|
5#
發表於 2015-4-3 23:16
| 只看該作者
回復 2# diolin
我知道可以開的起來, 但被別人開啟後我又要存檔就會有問題啊
所以才要一開啟檔案,就判斷檔案是否被別人開啟
這對多人可能同時使用一個檔案, 有很大的關係 |
|
|
|
|
|
|
- 帖子
- 29
- 主題
- 8
- 精華
- 0
- 積分
- 58
- 點名
- 0
- 作業系統
- WinXP
- 軟體版本
- office2003
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2015-3-2
- 最後登錄
- 2015-6-1
|
6#
發表於 2015-4-3 23:20
| 只看該作者
回復 3# GBKEE
想請問 GBKEE 版主
底下有些不太懂, 可以解答一下嗎
Sub SetAttribue()
Dim strFile As String
strFile = "c:\temp\test.xlsx"
If Not IsWorkBookOpen(strFile) Then
SetAttr strFile, vbReadOnly ' 不太懂這邊的意思
MsgBox "file now readonly"
Else
MsgBox "File is already open"
End If
End Sub
Function IsWorkBookOpen(FileName As String) As Boolean
Dim ff As Long
Dim ErrNo As Long
On Error Resume Next
ff = FreeFile() ' 不懂語法
Open FileName For Input Lock Read As #ff ' 不懂 #ff 意思
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select |
|
|
|
|
|
|