Ir ao conteúdo

Excel Verificar se está aberto e abrir planilha excel (vba)


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Olá. Existe alguma forma de verificar se a planilha está aberta, e então abrir?

Sub OpenUp()
    Workbooks.Open ("\\SERVIDOR\Users\Usuario\Desktop\FLUXO DE CAIXA\CONTAS A PAGAR.xlsm")
    Workbooks.Open ("\\SERVIDOR\Users\Usuario\Desktop\FLUXO DE CAIXA\ORDEM DE SERVIÇO.xlsm")
    Workbooks.Open ("\\SERVIDOR\Users\Usuario\Desktop\PREFEITURA 2021\Prefeitura Caminhões.xlsm")
    Workbooks.Open ("\\SERVIDOR\Users\Usuario\Desktop\PREFEITURA 2021\Prefeitura Máquinas.xlsm")
    Workbooks("FLUXO DE CAIXA.xlsm").Activate
End Sub

Estou fazendo desta forma, porém, se alguma planilha já está aberta dá erro.
Alguém pode me ajudar?

Postado

Caso somente a planilha fluxo de caixa esteja aberta (a qual vai executar a macro), não dá erro nenhum.

Porém, se alguma das outras planilhas já estiver aberta dá erro pra depurar, pede ser quer reabrir planilha e abre o depurador.

Postado

@Jefferson TS  Seria algo assim que está tentando fazer? Para a sua macro não abrir o mesmo arquivo duas vezes?

 

Arquivo = "\\SERVIDOR\Users\Usuario\Desktop\FLUXO DE CAIXA\CONTAS A PAGAR.xlsm"
    
If PlanilhaAberta(Arquivo) = False Then
    Workbooks.Open Arquivo
End If

 

Assim teria que implementar a função para retornar se você ou a macro já abriu a planilha.

Postado
Em 14/05/2021 às 17:28, Midori disse:

Seria algo assim que está tentando fazer? Para a sua macro não abrir o mesmo arquivo duas vezes?

 

Isso mesmo. Tentei conforme abaixo e deu este erro 👇

 

image.png.37949abea3351962ec89b8067618df96.png

  • Solução
Postado

@Jefferson TS Com On Error GoTo poderia usar uma função boolean para testar o Erro 9 ao tentar retornar o nome de uma planilha. A função vai ter como parâmetro o caminho do arquivo e se a planilha não estiver aberta, vai gerar o erro na atribuição do nome, p.ex,

 

Function PlanilhaAberta(ByVal Arquivo As String) As Boolean
    Dim N As String
    On Error GoTo FIM:
    N = Split(Arquivo, "\")(UBound(Split(Arquivo, "\")))
    N = Workbooks(N).Name
    PlanilhaAberta = True
FIM: If Err.Number = 9 Then PlanilhaAberta = False
End Function

 

Antes de tentar abrir a planilha sua macro pode passar o caminho do arquivo para a função. Se não quiser criar um if para cada um pode usar um array e fazer um loop assim,

 

Sub Abrir()
    Dim Arquivos    As Variant
    Dim Planilha    As Variant
        
    Arquivos = Array( _
        "\\SERVIDOR\Users\Usuario\Desktop\FLUXO DE CAIXA\CONTAS A PAGAR.xlsm", _
        "\\SERVIDOR\Users\Usuario\Desktop\FLUXO DE CAIXA\ORDEM DE SERVIÇO.xlsm", _
        "\\SERVIDOR\Users\Usuario\Desktop\PREFEITURA 2021\Prefeitura Caminhões.xlsm", _
        "\\SERVIDOR\Users\Usuario\Desktop\PREFEITURA 2021\Prefeitura Máquinas.xlsm")
    
    For Each Planilha In Arquivos
        If Not PlanilhaAberta(Planilha) Then
            Workbooks.Open Planilha
        End If
    Next Planilha
End Sub

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!