jnabais Posted October 19, 2009 at 06:19 PM Report Share #292384 Posted October 19, 2009 at 06:19 PM 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 Link to comment Share on other sites More sharing options...
MetalFatigue Posted October 23, 2009 at 05:00 PM Report Share #293050 Posted October 23, 2009 at 05:00 PM Explica-te melhor o que pretendes fazer. Explica o teu problema. Link to comment Share on other sites More sharing options...
jnabais Posted October 23, 2009 at 09:50 PM Author Report Share #293105 Posted October 23, 2009 at 09:50 PM 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 More sharing options...
jpaulino Posted October 24, 2009 at 08:25 AM Report Share #293133 Posted October 24, 2009 at 08:25 AM Mas isso com um determinado ficheiro aberto ou para qualquer ficheiro ? Link to comment Share on other sites More sharing options...
jnabais Posted October 24, 2009 at 03:20 PM Author Report Share #293177 Posted October 24, 2009 at 03:20 PM Olá! Para determinado ficheiro aberto. Obrigado Link to comment Share on other sites More sharing options...
Solution FreiNando Posted October 24, 2009 at 09:25 PM Solution Report Share #293239 Posted October 24, 2009 at 09:25 PM 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 More sharing options...
jnabais Posted October 25, 2009 at 08:56 PM Author Report Share #293326 Posted October 25, 2009 at 08:56 PM Boa noite. Obrigado pela ajuda. Vou testar em Excel 2003. Bom trabalho jnabais Link to comment Share on other sites More sharing options...
joseA Posted November 6, 2009 at 02:09 AM Report Share #294945 Posted November 6, 2009 at 02:09 AM ? Testei aquí em Excel 2003 e deu certo. 😁 😛 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now