Я создал многопользовательскую форму доступа, которая, по сути, будет открыта большую часть дня на компьютерах нескольких людей. В этой форме я создал кнопку, которая будет импортировать таблицу Excel через VBA. Код:
Option Compare Database
Private Sub Command0_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE ExcelTable.* FROM ExcelTable;"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "ExcelTable", "C:\Users\JohnDoe\Documents\MyTable.xlsx", True, "Data!A6:DB" & numberofrows
DoCmd.SetWarnings True
End Sub
Этот код хорошо импортирует данные. Тем не менее, пользователям часто нужно обновлять электронную таблицу в течение дня. Есть 2 проблемы, с которыми я часто сталкиваюсь:
Если пользователь пытается перезаписать исходную электронную таблицу обновленной версией, он получает сообщение об ошибке «Не удается получить доступ к документу только для чтения».
Если пользователь пытается открыть электронную таблицу, он получает сообщение об ошибке, что файл Excel заблокирован для редактирования.
У меня сложилось впечатление, что, запустив приведенный выше код VBA, пользователь импортирует статическую таблицу (не связанную таблицу), а это означает, что после импорта таблицы в Access она больше не ссылается на исходный файл Excel.
Как мне обойти эти сообщения об ошибках?
Пользователям необходимо будет обновлять файл Excel несколько раз в течение дня, и сейчас все должны полностью выйти из Access, чтобы получить доступ к исходному файлу Excel.