Як я можу оновити документ, який я відкрив у Excel, у режимі лише для читання?


8

У мене є документ Excel, який зберігається на сервері SharePoint, який я завжди відкриваю на своєму комп’ютері в режимі лише для читання, тому що мені потрібно посилатися на нього.

Кожен так часто, щоб отримати останні зміни, мені доводиться закривати файл і перезавантажувати його знову. Чи є в Excel 2007 варіанти, які дозволяють мені просто оновити документ, який я відкрив у режимі лише для читання, до останньої версії на сервері?

Ще краще, чи існує спосіб, коли це можна зробити динамічно, без того, щоб мені потрібно було натиснути оновлення?


Я просто намагався те саме - схоже, що відповідь все ще "НІ", немає оновлення стилю F5 для Excel. Я також виявив неможливим відкрити файл із останнього використовуваного списку Excel як лише для читання (перед тим, як це зробити, ви повинні зайти в браузер файлів) ... І ви не можете зробити свою відкриту електронну таблицю лише для читання ... І Excel дозволяє вводити текст у електронну таблицю, доступну лише для читання ... Все дуже дратує.
Білл К

Відповіді:


1

Рішення Юваля може бути достатньо, але тільки якщо зміни обмежуються вмістом комірок. Запитник не вказав, чи це так. Тим не менш: що, якщо зміна, яку ви хочете отримати, - це додавання (можливо, навіть видалення) робочих аркушів до робочої книги?

Різновид крихкого та примхливого рішення: зберігайте макрос у прихованому ОСОБА.XLS (B), щоб виконувати періодичну (шляхом перепланування себе) робочу книжку закрити та знову відкрити. PERSONAL.XLS (B) можна знайти на% USERPROFILE% \ AppData \ Роумінг \ Microsoft \ Excel \ XLSTART \)

Sub wkbRefresher()
    Dim refreshedWorkbook As Workbook
    Dim WkBks As Workbooks

    'full filepath
    fPath = "c:\tmp\mutatingWorkbook.xls"
    'in HH:MM:SS format:
    refreshInterval = "00:05:00"

    For i = 1 To Application.Workbooks.Count
        Debug.Print (Application.Workbooks.Item(i).FullName)
        If LCase(Application.Workbooks.Item(i).FullName) = LCase(fPath) Then
            Debug.Print ("  Yep thats the one! Lets refresh it.")
            Application.Workbooks.Item(i).Close
            'refreshedWorkbook = WkBks.Open(fPath, True, True)
            Set refreshedWorkbook = Excel.Application.Workbooks.Open(fPath, True, True)
        End If
    Next i

    ' Use at your own risk: this is an "asynchronous", the execution cannot be stopped by merely pressing the stop button in the VBA interface.
    ' You might have to do something like put a break marker on the line OnTime line so that next time around, it doesn't respawn itself.
    Application.OnTime Now + TimeValue(refreshInterval), "wkbRefresher"
End Sub

Звичайно, вищезазначений підрозділ може бути параметризований та / або ви можете приєднати його до спеціальної кнопки панелі інструментів чи чогось іншого. Оскільки збереження робочої книги зберігає інформацію про стан активного аркуша, активної комірки тощо, ви також можете включити кілька рядків для збереження бажаного імені активного аркуша та повторно активувати його щоразу після повторного відкриття.

Список літератури:

http://office.microsoft.com/en-us/excel-help/run-a-macro-HP010342865.aspx http://msdn.microsoft.com/en-us/library/office/ff196165(v=office .14) .aspx

Хоча я все не перевіряв, це, здається, є дуже корисним вступом, якщо ви не чули про PERSONAL.XLS (B): http://www.rondebruin.nl/win/personal.htm


0

Це може допомогти:

автор робочої книги може створити робочу книгу, яка автоматично оновлює зовнішні дані при відкритті книжки, встановивши прапорець Оновити дані при відкритті файлу у діалоговому вікні «Властивості підключення».

Ось де я це отримую. Це цікава стаття. Чи допомагає це?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.