Jak mogę odświeżyć dokument, który mam otwarty w programie Excel w trybie tylko do odczytu?

8

Mam dokument programu Excel przechowywany na serwerze SharePoint, który zawsze otwieram na komputerze w trybie tylko do odczytu, ponieważ muszę się do niego odwoływać.

Co jakiś czas, aby uzyskać najnowsze zmiany, muszę zamknąć plik i załadować go ponownie. Czy są jakieś opcje w programie Excel 2007, które pozwalają mi po prostu odświeżyć dokument, który otworzyłem w trybie tylko do odczytu, do najnowszej wersji na serwerze?

Co więcej, czy istnieje sposób, w jaki można to zrobić dynamicznie, bez konieczności odświeżania?

RoboShop
źródło
Właśnie próbowałem tego samego - wygląda na to, że odpowiedź brzmi „NIE”, nie ma odświeżania stylu F5 dla Excela. Stwierdziłem również, że niemożliwe jest otwarcie pliku z ostatnio używanej listy programu Excel jako tylko do odczytu (musisz to zrobić w przeglądarce plików, zanim będziesz mógł to zrobić) ... I nie możesz ustawić swojego otwartego arkusza kalkulacyjnego tylko do odczytu ... a program Excel umożliwia wprowadzanie tekstu do arkusza kalkulacyjnego tylko do odczytu ... Wszystko to bardzo denerwuje.
Bill K

Odpowiedzi:

1

Rozwiązanie Yuvala może wystarczyć, ale tylko jeśli zmiany są ograniczone do zawartości komórki. Pytający nie wskazał, czy tak jest. Niemniej jednak: co jeśli zmianą, którą chcesz wybrać, jest dodanie (a może nawet usunięcie) arkuszy w skoroszycie?

Coś w rodzaju kruchego i szczęśliwego rozwiązania: przechowuj makro w ukrytym PERSONAL.XLS (B), aby okresowo (poprzez zmianę harmonogramu) skoroszytu zamknąć i ponownie otworzyć. PERSONAL.XLS (B) należy znaleźć w% 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

Oczywiście powyższy sub można sparametryzować i / lub możesz dołączyć go do niestandardowego przycisku paska narzędzi lub czegoś takiego. Ponieważ zapisywanie skoroszytu powoduje zapisanie informacji o aktywnym arkuszu, aktywnej komórce itp., Możesz również dodać kilka wierszy, aby zapisać preferowaną nazwę aktywnego arkusza i aktywować go za każdym razem po ponownym otwarciu.

Bibliografia:

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

Chociaż nie sprawdziłem tego wszystkiego, wydaje się to bardzo pomocne wprowadzenie, jeśli nie słyszałeś o PERSONAL.XLS (B): http://www.rondebruin.nl/win/personal.htm

Justin
źródło
0

To może pomóc:

autor skoroszytu może utworzyć skoroszyt, który automatycznie odświeża dane zewnętrzne po otwarciu skoroszytu, zaznaczając pole wyboru Odśwież dane podczas otwierania pliku w oknie dialogowym Właściwości połączenia.

Oto gdzie to rozumiem. To ciekawy artykuł. czy to pomaga?

Yuval
źródło