Как найти права доступа к файлу Excel в VBA (Примечание: 2003) - PullRequest
1 голос
/ 02 декабря 2011

Может ли кто-нибудь сказать мне, как я могу узнать, нет ли у пользователя прав доступа к файлу Excel

on error goto label
set a = workbooks.open("some name")
exit sub
label:
    msgbox "Current user does not have access rights or file does not exist or _
             a document with the same name is already opened in another folder"
  end sub

Я только что использовал окно сообщения об ошибке открытия файла, я привел 3 причины, по которымможет вызвать ошибку, но я хочу, чтобы конкретная ошибка выскакивала, например, если у пользователя нет прав доступа, сообщение не должно содержать только прав доступа.

Я пытался отловить номера ошибок, но все 3 ошибкидайте число 1004, которое невозможно различить.

Хотя после поиска в Google я использовал vba.len(vba.dir(filename,vbnormal))=0, чтобы проверить, существует файл или нет

Теперь мне нужно знать, есть ли у пользователя права доступа или нетфайл Excel.Откуда я это знаю?любая помощь очень ценится

1 Ответ

0 голосов
/ 02 декабря 2011

Я думаю, у вас в основном правильный подход. Я бы также использовал перехват ошибок, чтобы определить, есть ли у пользователя доступ к файлу. Тем не менее, я согласен, что неспецифическое сообщение об ошибке не очень полезно.

Это отобразит специфичное для VBA сообщение об ошибке (даже если номер ошибки не изменился):

MsgBox Err.Description

Если вы хотите определить причину ошибки и использовать ее, например, чтобы отобразить собственное сообщение, вы можете сделать что-то вроде этого:

If InStr(Err.Description, "could not be found") <> 0 Then
    MsgBox "The file isn't where you said it was."
ElseIf InStr(Err.Description, "access") <> 0 Then
    MsgBox "U can't touch this."
Else
    ' etc.
End If

Хотя лучше проверить вещи самостоятельно, чем полагаться на Err.Description, если это возможно. Можно проверить, существует ли файл напрямую, например, так:

If Dir(filename) = "" Then ' Nicer than vba.len(vba.dir(filename,vbnormal))=0
    MsgBox "The file isn't where you said it was."
End If

Я не знаю эквивалентной функции для проверки доступа пользователя, поэтому я бы остановился на просмотре содержимого Err.Description.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...