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

1357
Tabbris

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

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

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

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

3
Это офисная программа, которая вызывает диалог, просит открыть только для чтения, уведомить, когда он свободен, или создать локальную копию? Если так, то есть другая проблема Canadian Luke 9 лет назад 0

4 ответа на вопрос

1
brettdj

У меня была такая же проблема несколько лет назад, когда я пытался открыть сетевой файл из-за рубежа. Если кто-то уже открыл его, 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 
Можете ли вы объяснить, как использовать этот код? fixer1234 9 лет назад 0
0
marsh-wiggle

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

enter image description here

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

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

Это не поможет, хотя с начальной задержкой при попытке открыть файл, когда кто-то уже обращается к нему. brettdj 9 лет назад 0
Это способ проверить, кто открыл файл. Разве это не вопрос? marsh-wiggle 9 лет назад 0
0
User123456798

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

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

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

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

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

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

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

Try to start excel with the /a switch on the command line. It can be caused by macroses or add-ins, but in this case you can load excel without this startup files.

Also enable the Ignore Other Applications that use Dynamic Data Exchange feature. Open Excel Options, click Advanced at the left side of the dialog window. Then make sure that DDE is selected.

Next try the following: open Tools – Folder options. In the list of the file types choose XLS. Then click the Advanced. Select Open. The Application Used to Perform Action box contains the actual command line used to start Excel. You should add in this field a space followed by "%1". Be sure to include the quotes. And deselect Use DDE. That’s all a can recommend.