A pasta de trabalho do Excel não abre até que o código VBA termine de ser executado

Elias Wick

Problema: a pasta de trabalho não abre até que a execução do código seja concluída.

Detalhes: eu tenho um loop que exigia que o usuário tivesse outro arquivo aberto, para que o código continuasse. Este arquivo deve ser baixado da Internet e aberto. Se o arquivo não estiver aberto, uma caixa de mensagem aparecerá pedindo ao usuário para abrir o arquivo. Mesmo que eu baixe o arquivo e o abra, ele não abrirá até que todos os outros códigos sejam executados.

Meus pensamentos: Talvez haja algo como um "Atualizar", que atualiza o estado atual. Eu provavelmente deveria adicionar algo ao código existente abaixo que atualize as pastas de trabalho do Excel e veja se algo mais aconteceu.

Código abaixo: (O código é bom e funciona para o que preciso, o problema é que a pasta de trabalho não abre até que todo o outro código esteja completo):

Private Function WorkbookActive() As Boolean

' Loop until the correct workbook is open
Do Until WorkbookActive = True
    On Error Resume Next
    If Workbooks("Rapport.csv") Is Nothing Then
        If MsgBox("[Rapport.csv] - Workbook is currently not open." & vbNewLine & "Please download and open [Rapports.csv] and press OK", vbOKCancel, "Workbook not open") = vbCancel Then Exit Do
        WorkbookActive = False
    ElseIf Not Workbooks("Rapport.csv") Is Nothing Then
        WorkbookActive = True
    End If
Loop

End Function
CINZAS

Tudo que você precisa é fazer seu loop "indireto", usando Application.Ontime. Reescreva seu loop desta maneira:

Sub IndirectLoop()
    On Error Resume Next
    Workbooks("Rapport.csv").Activate
    If Err.Number = 0 Then Exit Sub ' Done!
    If MsgBox("[Rapport.csv] - Workbook is currently not open." & vbNewLine & _
      "Please download and open [Rapports.csv] and press OK", _ 
      vbOKCancel, "Workbook not open") = vbCancel Then _
           Exit Sub ' loop cancelled by user

    ' Pause VBA and reschedule the routine for 3 seconds later
    ' Control passes here from VBA to excel to open the file by the user'
    Application.OnTime Now + TimeSerial(0, 0, 3), "IndirectLoop"
End Sub

A ideia é, em vez de fazer um loop dentro de sua rotina VBA (que mantém o Excel bloqueado), reprogramar a rotina usando Application.Ontime. Esta técnica vai passar o controle do VBA para o Excel por algum tempo (digamos 3 segundos no código acima), permitindo que ele faça alguma atividade, que é abrir o arquivo que você está esperando.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como posso obter uma estimativa do tempo restante até que o código termine de ser executado?

Aprimore o código para ser executado em todas as planilhas de uma pasta de trabalho

A pasta de trabalho do Excel referenciada no código não pode ser vista em nenhum lugar na barra de tarefas

Trabalho de função do Azure que nunca será executado

O código VBA morre ao abrir uma pasta de trabalho do Excel com macros

Como atrasar o fechamento de um aplicativo até que todo o código termine de ser executado?

Fazendo uma janela que é exibida até que o código termine de ser executado

O código no módulo de pasta de trabalho ainda é executado após o arquivo ser salvo como xlsx

O código no módulo de pasta de trabalho ainda é executado após o arquivo ser salvo como xlsx

Use valores de um menu suspenso para salvar uma pasta de trabalho do Excel (usando o código VBA)

Use valores de um menu suspenso para salvar uma pasta de trabalho do Excel (usando o código VBA)

A pasta de trabalho do Excel abre em uma versão antiga

O sub Workbook_Open não será executado automaticamente quando a pasta de trabalho for aberta

JQuery: Por que a solicitação ajax é executada antes que o código em beforeSend termine de ser executado?

Abrir a segunda pasta de trabalho aciona o código VBA na primeira pasta de trabalho

Como faço para que meu Código VBA percorra todas as planilhas da pasta de trabalho?

O trabalho de exemplo do Apache Flink falha ao ser executado com "Trabalho não encontrado"

Outra pasta de trabalho do VBA não fecha corretamente

O Canvas não é atualizado até que o JavaScript termine de ser executado

Como visualizar o código subjacente em uma pasta de trabalho do Excel?

Como executar o código no Outlook da pasta de trabalho do Excel?

Python não fecha a pasta de trabalho do Excel

Excel VBA: espere que o código de linha anterior termine sua execução completamente

O código VBA não está copiando e colando na pasta de trabalho correta

Excel VBA: mudei para uma nova pasta de trabalho e quero excluir uma planilha, mas o código está tentando excluir a planilha na pasta de trabalho da macro

ocultar a pasta de trabalho sob o formulário do usuário usando o excel vba

Divida planilhas com o mesmo intervalo de colunas na pasta de trabalho para separar arquivos do Excel com código VBA

passando a pasta de trabalho do botão de comando vba

Código VBA XML / Não executado no Office 2013 e / ou rede de trabalho

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo