Notifications
Clear all

Estrutura pra verificar se um arquivo está aberto

6 Posts
3 Usuários
0 Reactions
1,285 Visualizações
(@pvitor)
Posts: 11
Active Member
Topic starter
 

Galera, bom dia!

Estou com um pequeno problema... Utilizo o Excel integrado ao Excel para gerar alguns controles...

Tenho uma estrutura que acessa uma transação, salva o relatório em excel e a planilha base o trabalha, só que estou enfrentando o seguinte problema... quando baixo o relatório do SAP e salvo no PC, automaticamente ele é aberto no excel, aí o código trabalha fazendo as devidas cópias, fechando o arquivo oriundo do SAP e deletando o mesmo.

O problema está no seguinte, o tempo de execução do código é muito rápido e o excel toda vez manda uma mensagem ao final falando que o arquivo não existe, mesmo tendo executado tudo certinho.

Existe uma maneira de fazer um Do while ou algo do tipo, pra veriricar se o arquivo está aberto e força-lo a fechar somente quando o pc entender que o mesmo está aberto?

Acredito que assim soluciono esse erro.

Abraços

 
Postado : 31/05/2018 9:44 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

pvitor,

Você já comentou sobre esse mesmo problema em um outro tópico que abriu aqui no fórum. Lembro-me que solicitei que você salvasse um pequeno exemplo do seu arquivo original e anexasse o mesmo aqui no fórum, compactado com .ZIP. Somente assim é que poderemos testar o que está acontecendo com seu código.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 31/05/2018 10:20 am
(@pvitor)
Posts: 11
Active Member
Topic starter
 

Boa tarde Wagner!

É verdade, fiz outro tópico... então, o arquivo depende do SAP pra rodar tudo... não sei se ajudaria, posso colocar o código aqui, mas não irão conseguir rodar...

Fiz em uma planilha separada somente o código de transferência entre as bases, porém nesse tenho que abrir a planilha salva pelo SAP, e não apresentou a mensagem de erro.

O problema acredito que acontece devido ao SAP salvar a planilha e abri-la na sequencia automaticamente.... mas a execução do código é mto rápida e o excel deve entrar em colapso, mesmo fazendo tudo direitinho..

Consigo colar o código.... mas a planilha não sei se ajudaria.

 
Postado : 31/05/2018 11:55 am
(@pvitor)
Posts: 11
Active Member
Topic starter
 

Por isso perguntei sobre uma estrutura pra checar se o arquivo está aberto e aí sim dar continuidade ao código.. assim acredito que o erro não aconteça mais.

 
Postado : 31/05/2018 11:57 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Entendo...

Bom, o arquivo que você está querendo ver se ainda está aberto é um arquivo Excel? É um arquivo .xlsx?

Vou fazer alguma suposições e lhe passar um código que pode fazer essa verificação. Supondo que é um arquivo Excel do tipo .xlsx cujo nome seja Arquivo a ser fechado.xlsx. Você poderia usar o seguinte código para fechá-lo:

Sub FecharArquivo()
    Dim Wkb As Workbook
    
    For Each Wkb In Application.Workbooks
        If Wkb.Name = "Arquivo a ser fechado.xlsx" Then
            Wkb.Save
            Wkb.Close
        End If
    Next
End Sub 

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 31/05/2018 12:17 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

PVitor,

Caso não seja um arquivo Excel (se for também serve) tente a função IsFileOpen desse antigo artigo do suporte da Microsoft: Macro code to check whether a file is already open.

Isso já foi tratado recentemente aqui no Planilhando no tópico Verificar se arquivo está em aberto [Resolvido].

 
Postado : 31/05/2018 2:47 pm