Файл открыт другим пользователем

Помогите мне выследить вопрос.

Затем я пытаюсь открыть или сохранить таблицу в Excel, она всегда показывает мне строку состояния загрузки без какого-либо прогресса. Через несколько минут файл открывается или нет. Азартная игра Когда он не открылся, я получаю это сообщение об ошибке "файл открыт другим пользователем".

Я должен заметить, что у меня Windows 7, Office 2007. Я пытался перенести некоторые файлы на другой компьютер, и сначала он работает хорошо, без каких-либо проблем, но затем все еще та же проблема. Всплывающее диалоговое окно с сообщением. Это происходит только для сетевых файлов.

Конечно, я попытался запустить Excel в режиме сохранения и в режиме совместимости. Но ничего не изменится. Дайте, пожалуйста, какую-нибудь подсказку, что это может быть и как я могу это исправить?

4 ответа

Решение

Попробуйте запустить Excel с ключом / a в командной строке. Это может быть вызвано макросами или надстройками, но в этом случае вы можете загрузить Excel без этих файлов запуска.

Также включите Игнорировать другие приложения, которые используют функцию динамического обмена данными. Откройте "Параметры Excel", нажмите "Дополнительно" в левой части диалогового окна. Затем убедитесь, что выбран DDE.

Затем попробуйте следующее: откройте Инструменты - Параметры папки. В списке типов файлов выберите XLS. Затем нажмите Дополнительно. Выберите Открыть. Поле "Приложение, используемое для выполнения действия" содержит фактическую командную строку, используемую для запуска Excel. Вы должны добавить в это поле пробел, за которым следует "%1". Не забудьте включить цитаты. И отмените выбор Использовать DDE. Это все, что я могу рекомендовать.

У меня была такая же проблема несколько лет назад, когда я пытался открыть сетевой файл из-за рубежа. Если кто-то уже открыл его, Excel попытался бы открыть его в течение нескольких минут, прежде чем сказать, что он используется.

Я использовал приведенный ниже код, очень похожий на код Сида.

Код пытается записать в файл C; \ mywork.xls (измените ваш путь к файлу, чтобы он подходил), если есть ошибка, файл уже открыт, иначе файл открыт. Проверка ошибок происходит сразу, а не с задержкой по времени.

Sub Sample()
    Dim Ret
    Dim Wb As Workbook
    Dim strFile As String
    styrfile = "C:\myWork.xlsx"
    Ret = IsWorkBookOpen(strFile)
    If Ret = True Then
        MsgBox "File is open"
    Else
        Set Wb = Workbooks.Open(strFile)
    End If
End Sub

Function IsWorkBookOpen(FileName As String)
    Dim ff As Long, ErrNo As Long

    On Error Resume Next
    ff = FreeFile()
    Open FileName For Input Lock Read As #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

Microsoft блокирует файлы, открытые для 1 пользователя за раз, чтобы предотвратить внесение изменений, которые будут перезаписаны другим пользователем, у которого файл открыт перед сохранением изменений.

Есть ли причина, по которой этот файл хранится в сети, а не на локальном компьютере?

Если вам нужно открыть файл, я бы предложил открыть его как файл только для чтения

Попробуйте создать файл.bat, чтобы открыть файл только для чтения, что позволяет нескольким пользователям.

Убедитесь, что вы добавили кавычки, если в пути или имени файла есть пробелы. "LocalDrive:\ExcelPath\excel.exe" /r "NetworkDrive:\WorkbookPath\Workbook.xls"

В качестве альтернативы - использовать HTML-документ для ссылки на файл при загрузке? Это сохранит временный файл на вашем локальном компьютере, предоставляя полный доступ, который вы можете затем повторно скопировать на сетевой диск.

<a href="NetworkDrive:/WorkbookPath/Workbook.Xls" download>

Вы можете использовать procxp, чтобы отследить, кто еще открыл файл.

введите описание здесь

Используя PID (procid), вы можете проверить, какая программа и какой пользователь его открыл. Для этого бега tasklist.exe в возвышенном cmd.exe,

(Это полезно, когда файл был открыт с компьютера, на котором вы работаете. Если он был открыт с другого компьютера, запустите net files на сервере, на котором размещен общий ресурс, чтобы получить компьютер и пользователя, который его открыл).

Другие вопросы по тегам