如何为某些用户以读写方式打开excel文件,而为其他用户以只读方式打开
我有一个excel文件,我的所有同事都必须具有读取权限,但只有少数人可能具有写入权限 我试图在工作簿中引入一个“打开”过程来测试用户,并根据它来决定如何打开文件。我了解到它不能直接工作,所以我尝试访问一个外接程序,该外接程序有一个更改只读状态的过程如何为某些用户以读写方式打开excel文件,而为其他用户以只读方式打开,excel,vba,Excel,Vba,我有一个excel文件,我的所有同事都必须具有读取权限,但只有少数人可能具有写入权限 我试图在工作簿中引入一个“打开”过程来测试用户,并根据它来决定如何打开文件。我了解到它不能直接工作,所以我尝试访问一个外接程序,该外接程序有一个更改只读状态的过程 Private Sub Workbook_Open() users = Environ("USERNAME") Select Case users Case "chris": MsgBox "ok" C
Private Sub Workbook_Open()
users = Environ("USERNAME")
Select Case users
Case "chris": MsgBox "ok"
Case "david": MsgBox "ok"
Case "sam": MsgBox "ok"
Case Else: Application.Run ("read_only")
End Select
End Sub
这是外接程序中的子函数
Sub read_only()
file_name = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
Status = ActiveWorkbook.readonly
ActiveWorkbook.Close ' (the problem is here because also this sub stops when my workbook closes)
If Status = False Then
Workbooks.Open fileName:=file_name, readonly:=True
Else
Workbooks.Open fileName:=file_name, readonly:=False
End If
End Sub
有人知道如何解决这个问题吗?你可以直接做:)
试试这个
Private Sub Workbook_Open()
Users = Environ("USERNAME")
Select Case Users
Case "chris": MsgBox "ok"
Case "david": MsgBox "ok"
Case "sam": MsgBox "ok"
Case Else
Application.DisplayAlerts = False
On Error Resume Next
'may already be read only
If ThisWorkbook.Path <> vbNullString Then ThisWorkbook.ChangeFileAccess xlReadOnly
On Error GoTo 0
Application.DisplayAlerts = True
End Select
End Sub
Private子工作簿\u Open()
用户=环境(“用户名”)
选择案例用户
案例“chris”:MsgBox“ok”
案例“david”:MsgBox“ok”
案例“sam”:MsgBox“ok”
其他情况
Application.DisplayAlerts=False
出错时继续下一步
'可能已经是只读的
如果ThisWorkbook.Path vbNullString,则ThisWorkbook.ChangeFileAccess xlReadOnly
错误转到0
Application.DisplayAlerts=True
结束选择
端接头