Como posso atualizar um documento que abri no Excel no modo somente leitura?

8

Eu tenho um documento do Excel armazenado em um SharePoint Server, que sempre abro no meu computador no modo somente leitura porque preciso consultá-lo.

De vez em quando, para obter as alterações mais recentes, preciso fechar o arquivo e recarregá-lo novamente. Existe alguma opção no Excel 2007 que me permita simplesmente atualizar um documento que eu tenha aberto no modo somente leitura para a versão mais recente no servidor?

Melhor ainda, existe uma maneira em que isso possa ser feito dinamicamente, sem que eu precise acessar a atualização?

    
por RoboShop 04.11.2011 / 01:45

2 respostas

0

Isso pode ajudar:

a workbook author can create a workbook that automatically refreshes external data when the workbook is opened by selecting the Refresh data when opening the file check box in the Connection Properties dialog box.

Isso é onde eu entendi. É um artigo interessante. Isso ajuda?

    
por 04.11.2011 / 03:37
0

A solução de Yuval pode ser suficiente, mas somente se as mudanças estiverem limitadas ao conteúdo das células. O Inquirer não indicou se esse é o caso. Não obstante: e se a alteração que você deseja pegar for a adição de (talvez até mesmo a remoção de) planilhas na pasta de trabalho?

Tipo de solução frágil e nojenta: armazene uma macro em seu PERSONAL.XLS oculto (B) para executar uma pasta de trabalho periódica (reescalonando-se) fechar e reabrir. PERSONAL.XLS (B) deve ser encontrado em % 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

É claro que o sub-item acima pode ser parametrizado e / ou você pode anexá-lo a um botão da barra de ferramentas personalizada ou algo assim. Como a pasta de trabalho salva a planilha ativa, a célula ativa, etc., informações de estado, você também pode querer incluir algumas linhas para salvar seu nome de planilha ativo preferido e reativá-lo a cada vez que for reaberto.

Referências:

link link

Embora eu não tenha examinado tudo, esta parece ser uma introdução muito útil se você não ouviu falar de PERSONAL.XLS (B): link

    
por 10.05.2013 / 01:45