Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为某些用户以读写方式打开excel文件,而为其他用户以只读方式打开_Excel_Vba - Fatal编程技术网

如何为某些用户以读写方式打开excel文件,而为其他用户以只读方式打开

如何为某些用户以读写方式打开excel文件,而为其他用户以只读方式打开,excel,vba,Excel,Vba,我有一个excel文件,我的所有同事都必须具有读取权限,但只有少数人可能具有写入权限 我试图在工作簿中引入一个“打开”过程来测试用户,并根据它来决定如何打开文件。我了解到它不能直接工作,所以我尝试访问一个外接程序,该外接程序有一个更改只读状态的过程 Private Sub Workbook_Open() users = Environ("USERNAME") Select Case users Case "chris": MsgBox "ok" C

我有一个excel文件,我的所有同事都必须具有读取权限,但只有少数人可能具有写入权限

我试图在工作簿中引入一个“打开”过程来测试用户,并根据它来决定如何打开文件。我了解到它不能直接工作,所以我尝试访问一个外接程序,该外接程序有一个更改只读状态的过程

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
结束选择
端接头