Excel VBA Workbook.ChangeFileAccess

У меня возникают проблемы с изменением режима доступа к файлам в книгах Excel с помощью VBA. Я использую Office 2010.

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

Public Sub example() Dim w As Workbook 'open workbook with write access Set w = Workbooks.Open("example.xlsx", ReadOnly:=False) Debug.Print w.Name 'sucessfully accesses members of w 'change file access to read only w.ChangeFileAccess XlFileAccess.xlReadOnly Debug.Print w.Name 'successfully accesses members of w 'change file access back to read/write w.ChangeFileAccess XlFileAccess.xlReadWrite Debug.Print w.Name 'fails to access members of w with automation error End Sub 

Я не понимаю, почему это так. Очевидно, что можно открыть книгу как только для чтения, изменить ее на чтение, а затем продолжить использовать объект. Почему эта ситуация отличается? Я не могу найти упоминания об этом поведении в MSDN.
http://msdn.microsoft.com/en-us/library/ff193344.aspx

Можно ли изменить режимы доступа к файлам, какие я пытаюсь сделать?

Я думаю, вы попали в интересную проблему с тем, как Excel меняет состояние чтения / записи. Чтобы переключить книгу из режима чтения только для чтения / записи, Excel закрывает эту книгу и снова открывает ее. Во время этого процесса ссылка на объект превращается в нечто странное. Если вы добавите строку:

  Set w = Workbooks("example.xlsx") 

после того, как вы измените FileAccess на xlReadWrite, тогда он снова встанет, но это не совсем идеально.

Крис

  • Отсутствует Microsoft.VisualStudio.OfficeTools.Controls.ManagedWrapper из GAC с помощью clickonce на non dev шт.
  • Excel 2007 VBA - Использование Sheets.Add для создания диаграммы в конце книги
  • Как иметь excel addin читать строки с листа, пока не будет больше данных?
  • Копирование текста из слова с помощью vba в ячейку excel
  • Экспорт динамической таблицы Excel; Ошибка входа в Microsoft SQL Server
  • Использование Powershell для добавления таблицы в конец файла Excel (Последняя строка)
  • Как добавить переменные (исходящие из ячейки) в веб-запросах в MS Excel 2010?
  • Запуск VSTO из-за пределов офиса
  • Отображение документа Microsoft Office в элементе управления WPF
  • Альтернатива веб-компонентам Office
  • Установка активного принтера в функции PrintOut OLE
  • Interesting Posts

    Экспорт матрицы из Stata 12 в Excel или MATLAB

    Excel VBA Fill Combo Box с данными из SQL-запроса

    Excel: как отделить содержимое ячейки до трех разных ячеек

    API событий Apache POI Обновление существующего листа Excel

    Извлечение имен из текста

    Процесс зависает в фоновом режиме

    VBA проверяет, является ли массив одномерным

    Как подойти к настройке паролей из нескольких файлов excel (общий для Dropbox)?

    Что бы вы переключили на использование вместо excel на корпоративном рабочем месте, когда вы не программист по профессии?

    Banded Rows для дизайна таблиц Excel непоследовательны при сортировке

    Можете ли вы сделать формулу, а затем включить вложенный оператор IF?

    Подсчитайте наличие текста с двумя условиями над несколькими листами в excel

    Как обрабатывать несколько запросов IFTHEN по столбцам в Excel?

    Доступ к данным VBA TransferSpreadsheet, не экспортированным без ошибок

    Поиск помощи при копировании значения из одной ячейки в другую с помощью VBA.

    Давайте будем гением компьютера.