Comment actualiser un document que j'ai ouvert dans Excel en mode lecture seule?

8

J'ai un document Excel qui est stocké sur un serveur SharePoint, que j'ai toujours ouvert sur mon ordinateur en mode lecture seule car je dois y faire référence.

De temps en temps, pour obtenir les dernières modifications, je dois fermer le fichier et le recharger à nouveau. Existe-t-il des options dans Excel 2007 qui me permettent d'actualiser simplement un document que j'ai ouvert en mode lecture seule vers la dernière version sur le serveur?

Mieux encore, existe-t-il un moyen de le faire de manière dynamique, sans que je doive appuyer sur Actualiser?

RoboShop
la source
J'essayais juste la même chose - on dirait que la réponse est toujours "NON", il n'y a pas de rafraîchissement de style F5 pour Excel. J'ai également constaté qu'il était impossible d'ouvrir un fichier de la liste la plus récemment utilisée d'Excel en lecture seule (vous devez aller dans le navigateur de fichiers avant de pouvoir le faire) ... Et vous ne pouvez pas rendre votre feuille de calcul actuellement ouverte en lecture seule ... Et Excel vous permet de saisir du texte dans une feuille de calcul en lecture seule ... Tout cela est très ennuyeux.
Bill K

Réponses:

1

La solution de Yuval pourrait suffire, mais seulement si les modifications sont limitées au contenu des cellules. L'enquêteur n'a pas indiqué si tel était le cas. Néanmoins: que se passe-t-il si le changement que vous souhaitez récupérer est l'ajout (peut-être même la suppression de) feuilles de calcul dans le classeur?

Sorte de solution fragile et dégueulasse: stockez une macro dans votre PERSONAL.XLS (B) caché pour effectuer un classeur périodique (en se reprogrammant), fermez et rouvrez. PERSONAL.XLS (B) doit être trouvé dans% 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

Bien sûr, le sous-dessus peut être paramétré et / ou vous pouvez le joindre à un bouton de barre d'outils personnalisé ou quelque chose. Étant donné que l'enregistrement du classeur enregistre les informations d'état de la feuille active, de la cellule active, etc., vous pouvez également inclure quelques lignes pour enregistrer le nom de votre feuille active préférée et le réactiver à chaque fois après une réouverture.

Références:

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

Bien que je n'aie pas tout vérifié, cela semble être une introduction très utile si vous n'avez pas entendu parler de PERSONAL.XLS (B): http://www.rondebruin.nl/win/personal.htm

Justin
la source
0

Cela pourrait aider:

un auteur de classeur peut créer un classeur qui actualise automatiquement les données externes lorsque le classeur est ouvert en cochant la case Actualiser les données lors de l'ouverture du fichier dans la boîte de dialogue Propriétés de connexion.

C'est là que je l'obtiens. C'est un article intéressant. est-ce que cela aide?

Yuval
la source