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.
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))