Jump to content

Barrar a abertura de um documento Excel!!!


jnabais
 Share

Go to solution Solved by FreiNando,

Recommended Posts

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

Link to comment
Share on other sites

  • Solution

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.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.