Uma macro do excel para determinar se uma pasta de trabalho é aberta

Como você pensar em abrir automaticamente planilhas do Excel, considere o que pode acontecer se você tentar abrir um livro que já está aberto. No mundo não-VBA, Excel tenta abrir o arquivo novamente, com a mensagem mostrada alertando que as alterações não salvas serão perdidas. Você pode proteger contra tal ocorrência, verificando se um determinado arquivo já está aberto antes de tentar abri-lo novamente.

Evitar essa mensagem de aviso.
Evitar essa mensagem de aviso.

Como as obras de macro

A primeira coisa a notar sobre esta macro é que é uma função, não um procedimento Sub. Como você vai ver, tornando esta macro uma função permite que você passe qualquer nome de arquivo a ele para testar se o arquivo já está aberto.

A essência deste código é simples. Você está testando um determinado nome de arquivo para ver se ele pode ser atribuído a uma variável Object. Apenas pastas de trabalho abertas pode ser atribuído a uma variável Object. Ao tentar atribuir um livro fechado para a variável, ocorre um erro.

Se a pasta de trabalho dado pode ser atribuído, o livro é open-se ocorrer um erro, o livro está fechado.

Função FileIsOpenTest (TargetWorkbook As String) Como Boolean`Step 1: Declare seu variablesDim TestBook Como Workbook`Step 2: Diga Excel para retomar em errorOn Error Resume Next`Step 3: Tente atribuir o livro de destino para TestBookSet TestBook = pastas de trabalho (TargetWorkbook) `Etapa 4: Se não ocorreu nenhum erro, pasta de trabalho é já openIf Err.Number = 0 = ThenFileIsOpenTest TrueElseFileIsOpenTest = FalseEnd IfEnd Função

A primeira coisa a macro faz é declarar uma variável String que vai conter o nome do arquivo que o usuário escolhe. TestBook é o nome da sua variável String.



Na Etapa 2, você diz Excel que pode haver um erro ao executar este código e, em caso de um erro, retomar o código. Sem esta linha, o código seria simplesmente parar quando ocorre um erro. Novamente, você testar um determinado nome de arquivo para ver se ele pode ser atribuído a uma variável Object. Se a pasta de trabalho dado pode ser atribuído, é open-se ocorrer um erro, é fechado.

Na Etapa 3, você tentar atribuir o livro dado à variável Object TestBook. O livro que tentar atribuir é uma variável String chamada TargetWorkbook. TargetWorkbook é passado para a função nas declarações de função (ver a primeira linha do código). Esta estrutura elimina a necessidade de codificar um nome de pasta de trabalho, permitindo que você passá-lo como uma variável em vez.

Na Etapa 4, você simplesmente verificar para ver se ocorreu um erro. Se não ocorrer um erro, a pasta de trabalho é aberta, assim você definir o FileIsOpenTest para True. Se ocorrer um erro, o livro não está aberto e você definir a FileIsOpenTest para Falso.

Mais uma vez, esta função pode ser usada para avaliar qualquer arquivo que você passar para ele, via seu argumento TargetWorkbook. Esta é a beleza de colocar a macro em uma função.

A macro a seguir demonstra como implementar esta função. Aqui, você chamar a nova função FileIsOpenTest para se certificar de que o usuário não pode abrir um arquivo já aberto:

Sub Macro1 ()
`Passo 1: definir uma variável String
Dim FName As Variant
Dim FNFileOnly As String
`Passo 2: Método GetOpenFilename caixa de diálogo ativa
FName = Application.GetOpenFilename (_
FileFilter: ="Excel pastas de trabalho, *. Xl *", _
Título: ="Escolha uma pasta de trabalho para abrir", _
MultiSelect: = false)
`Passo 3: Abra o arquivo escolhido se não já abriu
Se FName lt; gt; false Then
FNFileOnly = StrReverse (Esquerda (StrReverse (FName), _
InStr (StrReverse (Nm), ") - 1))

Publicações relacionadas