Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

jnabais

Barrar a abertura de um documento Excel!!!

Mensagens Recomendadas

jnabais    0
jnabais

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jnabais    0
jnabais

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FreiNando    22
FreiNando

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade