none
Verificar se planilha ja esta aberta RRS feed

  • Pergunta

  • Pessoal na empresa em que eu trabalho estou tendo um grande problema. Trabalhamos com uma planilha em rede, e alguns usuários não percebem que abriram uma cópia como leitura, e acabam fazendo alteração nela. Gostaria de saber se tem como criar uma rotina para verificar se o arquivo EXCEL já esta aberto, e se estiver emitir aviso.

    domingo, 22 de junho de 2014 01:31

Respostas

  • Guiu,

    Você pode usar o evento SheetChange do Workbook e verificar se o arquivo é readonly.

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      If ThisWorkbook.ReadOnly = True Then
        MsgBox "Sua Mensagem"
      End If
    End Sub


    segunda-feira, 23 de junho de 2014 19:03

Todas as Respostas

  • Habilite a opção: Pasta Compartilhada.

    Para habilitar este recurso, abra a planilha que deseja compartilhar.

    Navegue até a aba "Revisão"

    Clique no botão "Compartilhar Planilha / Pasta de Trabalho"

    Após feito isso será aberta uma nova janela, marque a opção "Permitir alterações por mais de um usuário ao mesmo tempo"

    Nesta mesma janela, há uma aba chamada "Avançado", onde você pode habilitar ou controlar o comportamento de opções avançadas. 
    Mas basicamente a planilha já poderá ser utilizada por mais de um usuário ao mesmo tempo.

    No final, salve a planilha e realize um teste.

    Você pode notar quando abre uma planilha compartilhada, olhando sobre a barra de titulos, la você vai encontrar a palavra escrita "COMPARTILHADA"


    domingo, 22 de junho de 2014 23:08
  • Valeu pela resposta Supimpa, mas o arquivo tem macros, e dai a necessidade de ter uma verificação por meio do VBA e se possível emitir um aviso, tipo "A PLANILHA JA ESTA ABERTA".
    segunda-feira, 23 de junho de 2014 00:05
  • Tem esta forma, mas não sei se o comportamento é o que você espera.

    Esta macro não roda em módulos, tem que ser inserida em: "EstaPasta_de_trabalho"

    Private Sub Workbook_Open()
    'caso o valor da célula a1 da planilha 1 seja igual a usando. Fecha a planilha.
    If (Sheets("Plan1").Range("a1").Value) = "usando" Then
    
    Workbooks.Close
    
    Else
    Caso o valor seja igual a vazio, insere o valor usando.
    Sheets("Plan1").Range("a1").Value = "usando"
    ThisWorkbook.Save
    End If
    End Sub
    
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Ao fechar a plnilha, altera o valor para vazio e libera para outros usuários
    Sheets("Plan1").Range("a1").Value = ""
    
    End Sub
    
    Abçs

    segunda-feira, 23 de junho de 2014 18:51
  • Guiu,

    Você pode usar o evento SheetChange do Workbook e verificar se o arquivo é readonly.

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      If ThisWorkbook.ReadOnly = True Then
        MsgBox "Sua Mensagem"
      End If
    End Sub


    segunda-feira, 23 de junho de 2014 19:03
  • Perfeito !

    Valeu Natan

    domingo, 29 de junho de 2014 04:21