Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
diego_janjao

Excel RESOLVIDO VBA - Abrir outra planilha como "Somente Leitura"

Recommended Posts

Pessoal, boa noite.

 

Eis que tenho a seguinte situação: Tenho uma planilha (Materiais Segregados) que busca os dados em outra (Registro de Recebimento), e para que não fique cheia de links externos eu uso um copiar colar por .Offset no VBA.

O que acontece: As vezes o usuário que está usando a planilha de Recebimento também fará o uso da Planilha de Segregados mas quando isso ocorre, aparece a seguinte mensagem:

image.png.8cc1e3d726a2d7ff4b84f46608351f3c.png

Caso clique em sim, perderá tudo o que estava fazendo no Recebimento, caso clique em Não, acaba abrindo o depurador (Ainda não aprendi usar o On Error GoTo).

image.png.1e46bfc9a7d692adcc6654b54fc7a2e9.png

 

A solução que eu tentei foi a seguinte: Usar o ReadOnly: = True no comando Workbooks.Open mas não funcionou:

 

Private Sub pesquisar_btn_Click()

    Dim EmpFound As Range
    Dim Wb As Workbook
    
    Application.ScreenUpdating = False
 
    Set Wb = Excel.Application.Workbooks.Open("\\ln008svr03\processos\Projeto BPF Bonsucesso\10_Recebimento\RO.BN.05_002_Registro de Recebimento 2018.xlsb", ReadOnly:=True)
    Wb.Sheets("Registro de Recebimento 2018").Activate

Alguém pode me ajudar a contornar isso?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, @diego_janjao

 

Tô estranhando isso que tá acontecendo contigo.

Quando você tem um ArquivoA em rede e o Usuário1 na Máquina1 já está com ele aberto e você, Usuário2 na Máquina2 abre-o via macro da maneira que você descreveu, com ReadOnly = True, o arquivo abre normalmente em modo Somente Leitura sem emitir nenhum aviso (testei aqui e rodou assim).

Será que o ArquivoA já não estava aberto na sua Máquina2 ? 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Edson Luiz Branco bom dia. Quando ele está em outra máquina aberto funciona perfeitamente, pois o que ele faz é abrir o arquivo como somente leitura, pega os dados, fecha a planilha de recebimento sem salvar e tá tudo certo.

 

Esqueci de mencionar que no fim do meu evento ele fecha o Wb mas enfim.

 

Se eu estiver com o recebimento aberto sem modificações, ele considera o Workbook.Open já concluído, copia e fecha. Mas se tiver alguma modificação vai aparecer a mensagem conforme a imagem 1.

Pensando agora, acho que fica difícil abrir como somente leitura de já estiver aberto porque já terá um arquivo (editável que eles usam) aberto para lançar os recebimentos.

 

Será se não dá pra, via VBA, eu criar uma cópia de Recebimento, abrir essa cópia, pegar os dados, fechar a cópia e apagar a cópia?

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, diego_janjao disse:

Será se não dá pra, via VBA, eu criar uma cópia de Recebimento, abrir essa cópia, pegar os dados, fechar a cópia e apagar a cópia?

 

Tente isso:

Private Sub pesquisar_btn_Click()
    Const caminho = "\\ln008svr03\processos\Projeto BPF Bonsucesso\10_Recebimento\"
    Const arquivo = "RO.BN.05_002_Registro de Recebimento 2018.xlsb"
    Dim arqTemp As Object
  Dim EmpFound As Range
  Dim Wb As Workbook
  Application.ScreenUpdating = False
    With CreateObject("Scripting.FileSystemObject")
      If .FileExists(caminho & arquivo) Then
        .CopyFile Source:=caminho & arquivo, Destination:=caminho & arquivo & "(Cópia)", _
                  OverWriteFiles:=True
        Set arqTemp = .GetFile(caminho & arquivo & "(Cópia)")
      Else
        Exit Sub
      End If
      Set Wb = Workbooks.Open(arqTemp.Path)
      Wb.Sheets("Registro de Recebimento 2018").Activate
      '.....
      '.....
      '.....
      '.....
      Wb.Close SaveChanges:=False
      arqTemp.Delete True
    End With
  Set arqTemp = Nothing: Set EmpFound = Nothing: Set Wb = Nothing
End Sub

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×