Как обновить документ, открытый в Excel, в режиме только для чтения?

8

У меня есть документ Excel, который хранится на сервере SharePoint, который я всегда открываю на своем компьютере в режиме только для чтения, потому что мне нужно сослаться на него.

Время от времени, чтобы получить последние изменения, я должен закрыть файл и перезагрузить его снова. Существуют ли какие-либо параметры в Excel 2007, которые позволяют мне просто обновить открытый у меня документ в режиме только для чтения до последней версии на сервере?

Еще лучше, есть ли способ, где это можно сделать динамически, без меня, чтобы нажать обновить?

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

Ответы:

1

Решение Ювала может быть достаточным, но только если изменения ограничены содержимым ячейки. Опросчик не указал, так ли это на самом деле. Тем не менее: что, если изменение, которое вы хотите получить, это добавление (возможно, даже удаление) рабочих листов в рабочую книгу?

Вид хрупкого и грубого решения: сохраните макрос в скрытом файле PERSONAL.XLS (B), чтобы выполнить периодическое (путем перепланирования самого себя) закрытие и повторное открытие книги. PERSONAL.XLS (B) должен быть найден в папке% USERPROFILE% \ AppData \ Roaming \ 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 +0,14) .aspx

Хотя я не проверял все это, это, кажется, очень полезное введение, если вы не слышали о PERSONAL.XLS (B): http://www.rondebruin.nl/win/personal.htm

Джастин
источник
0

Это может помочь:

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

Это где я получаю это. Это интересная статья. Это помогает?

Юваль
источник