• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jnabais

Barrar a abertura de um documento Excel!!!

8 mensagens neste tópico

Boa noite.

Será possível através de VBA barrar (impedir) a abertura de outro documento Excel tendo obviamente aberto o documento Excel com essa determinação via VBA.

Obrigado e bom trabalho.

Jnabais

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Explica-te melhor o que pretendes fazer. Explica o teu problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá!

Não é um problema. É uma dúvida e curiosidade: imagina que tenho um documento (Excel) aberto com o qual estou a trabalhar; é-me permitido abrir um segundo documento (excel) em silmutâneo; não é?! Pois muito bem, será que dá para impedir (barrar) o acesso a um segundo documento excel? Ou seja, arranjar forma de só se poder trabalhar (ou abrir) um documento excel de cada vez?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas isso com um determinado ficheiro aberto ou para qualquer ficheiro ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa noite

No ficheiro que queres que fique aberto basta colocares o seguinte código na janela do VBA para o Livro(EsteLivro por defeito)

Desta forma irás permitir ou não a criação ou abertura de outro ficheiro, assim como fechar todos os ficheiros abertos excepto este.

'Objecto para aceder aos events da Aplicação
Dim WithEvents W As Application

'Pergunta se quer criar um novo documento
Private Sub W_NewWorkbook(ByVal Wb As Workbook)
    If MsgBox("Quer Criar Um Novo Ficheiro?", vbYesNo) = vbNo Then Wb.Close (False)
End Sub

'Pergunta se quer abrir o documento
Private Sub W_WorkbookOpen(ByVal Wb As Workbook)
    If Wb.Name = Me.Name Then Exit Sub
    If MsgBox("Quer Abrir o Fcheiro: " & Wb.Name, vbYesNo) = vbNo Then Wb.Close
End Sub


'Fechar todos os documentos abertos quando este documento abrir
Private Sub Workbook_Open()
    Dim N As Integer, I As Integer
    On Error Resume Next
    
    Set W = Application
    
    'Número de livros abertos
    With Application.Workbooks
    
    N = .Count
    For I = 1 To N - 1
        If .Item(.Count - 1).Name <> Me.Name Then
            .Item(.Count - 1).Close
        Else
            .Item(.Count - 2).Close
        End If
    Next I
    
    End With
End Sub

Caso queiras que funcione com todos os ficheiros deves gravar como suplemento do Excell, e em seguida activar esse suplemento.

O código do ultimo procedimento deve ficar mais simples, porque desta vez assim que o Excell arrancar já esta funcionalidade está activa.

'Activar o Objecto
Private Sub Workbook_Open()
    Set W = Application
End Sub

Espero que seja o que pretendias.

Só testei no Excel 2007.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa noite.

Obrigado pela ajuda.

Vou testar em Excel 2003.

Bom trabalho

jnabais

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora