Ir ao conteúdo
  • Cadastre-se

Visual Basic VBA - Tirar Foto com Webcam via Macro


Posts recomendados

Boa Noite!

Esta é macro que pesquisei na internet, realizei algumas mudanças, mas não esta funcionando para eu tirar uma foto com minha webcam e salva-la em meu Pc. Depois queria exibir a foto na minha Userform dentro do campo Imagem. isso usando um botão para disparar essa Macro. Como podem me ajudar?

Sem título.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Gilberto Moreira    ainda não sei programar em vba , mas parece um erro aqui nesse loop , onde você colocou para repetir cinco v ezes

Private Sub BtnFotoWebcam_Click()
  Dim CaminhoFoto, Atrasar
  Dim ProgramaFoto
  'CaminhoFoto = "C:\Users\StarForch\Pictures\" & TxtNomedoVisitante.Value & ".bmp"
  CaminhFoto = "C:\Users\StarForch\Pictures\" & TxtNomedoVisitante.Value & ".bmp"
  ProgramaFoto = shell("C:\Users\StarForch\Pictures\CommandCam.exe",vbMide) & Filename & CaminhoFoto
  '" shell("C:\Users\StarForch\Pictures\CommandCam.exe"/filename """CaminhoFoto" & "",vbMide)
  For Atrasar = 0 To 5
    Application.Wait(Now + TimeValue("00:00:01") )
  Next
  ImageFotoVisitante.Picture = Nothing
  'ImageFotoVisitante.Picture = LoadPicture(CaminhoFoto)
  ImageFotoVisitante.Picture = LoadPicture(CaminhoFoto)
End Sub
  

 

Link para o comentário
Compartilhar em outros sites

Obrigado @devair1010 , mas acredito que estaja acusando este erro em sua máquina pois cada webcam tem um time para disparar as fotos. Sendo assim este temporizador de 0 à 5 é para minha máquina, aí a sua não teve ser o mesmo ajuste, tendo que realizar um ajuste para a sua webcam. Mas agradeço muito a atenção e o empenho em me ajudar nesta dúvida, pois, quando resolver irá me ajudar muito!🙏🏻🙏🏻🙏🏻

 

Grato!

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Gilberto Moreira Shell é uma função para rodar um programa executável da mesma forma que faria com duplo clique no Explorer ou via linha de comando/prompt.

 

O programa CommandCam.exe existe? E se existe basta executar assim para salvar a imagem?

 

Na atribuição de ProgramaFoto você concatenou Shell com duas variáveis aparentemente com o caminho da imagem. Porém essa função não retorna nada relacionado ao caminho do arquivo.

  • Obrigado 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Midori Boa noite! Que bacana sua visão! Certo! Em relação ao CommandCam até estava usando ele mas estava apresentando falhas em realizar este procedimento que identificou sobre concatenar e retornar a imagem ao objeto do Userform. Bom aproveitando seu conhecimento e visão, vamos ver se seria possível me ajudar no que eu quero! Ex: da Sub desejada:

 

Sub BtnFotoWebcam_Click()

 

'Dimensionar as variáveis'''''''''''''''''''''''''''''''''''''''''''''''''''

Dim CaminhoFoto, Atrasar Dim ProgramaFoto

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Setar ou fazer as Variáveis receberem os Valores de caminhos e arquivos de disparo de foto da webcam(Pode ser o arquivo de Engrenagem que ativa a função de disparo da Foto da Webcam)''''''''Concatenar Valor(Nome do Visitante) da Textbox com Filename salvando em pasta de imagens e retornando a foto tirada da webcam no objeto imagem do Userform.

CaminhFoto = "C:\Users\StarForch\Pictures\" & TxtNomedoVisitante.Value & ".bmp" ProgramaFoto = shell("C:\Users\StarForch\Pictures\CommandCam.exe",vbMide) & Filename & CaminhoFoto '" shell("C:\Users\StarForch\Pictures\CommandCam.exe"/filename """CaminhoFoto" & "",vbMide)

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"

For Atrasar = 0 To 5

Application.Wait(Now + TimeValue("00:00:01") )

Next ImageFotoVisitante.Picture = Nothing

'ImageFotoVisitante.Picture = LoadPicture(CaminhoFoto)

ImageFotoVisitante.Picture = LoadPicture(CaminhoFoto)

 

End Sub

 

Tentei de várias formas assistindo vídeos na internet mas não consegui realizar todos estes parametros. Ou só tirava a foto e salvava ou só retornava a imagem no objeto imagem do Userform.😞

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Gilberto Moreira Seu código espera o controle TxtNomedoVisitante (TextBox) para a entrada do nome da imagem, porém seu fórmulário só tem um botão e aparentemente um controle Image.

 

Entes de colocar mais controles, teste da forma mais simples só com Image1 e CommandButton1. Então abra uma planilha em branco, crie outro fórmulário e adicione esses dois controles (Não modifique os nomes). Deixei o nome da imagem como Teste.bmp para a macro procurar no diretório C:\Users\StarForch\Pictures, mas se quiser outro é só modificar.

 

Antes de rodar você pode comentar a linha do Shell e salvar uma imagem bmp manualmente direto pelo programa e depois executar o formulário e clicar no botão para ver que a imagem será carregada. Assim saberá que o forumulário está carregando a imagem corretamente. Depois apague e imagem do diretório e tire o comentário da linha do Shell.

 

Private Sub CommandButton1_Click()
    Const DIRETORIO As String = "C:\Users\StarForch\Pictures\"
    Dim CaminhoFoto As String
    Dim NomeFoto    As String
    
    NomeFoto = "Teste.bmp"
    CaminhoFoto = DIRETORIO & NomeFoto
    
    Call Shell(DIRETORIO & "CommandCam.exe /filename " & NomeFoto, vbHide)
    Call Application.Wait(Now + TimeValue("00:00:05"))
 
    Image1.Picture = LoadPicture(CaminhoFoto)
End Sub

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Midori disse:

@Gilberto Moreira Seu código espera o controle TxtNomedoVisitante (TextBox) para a entrada do nome da imagem, porém seu fórmulário só tem um botão e aparentemente um controle Image.

 

Entes de colocar mais controles, teste da forma mais simples só com Image1 e CommandButton1. Então abra uma planilha em branco, crie outro fórmulário e adicione esses dois controles (Não modifique os nomes). Deixei o nome da imagem como Teste.bmp para a macro procurar no diretório C:\Users\StarForch\Pictures, mas se quiser outro é só modificar.

 

Antes de rodar você pode comentar a linha do Shell e salvar uma imagem bmp manualmente direto pelo programa e depois executar o formulário e clicar no botão para ver que a imagem será carregada. Assim saberá que o forumulário está carregando a imagem corretamente. Depois apague e imagem do diretório e tire o comentário da linha do Shell.

 

Private Sub CommandButton1_Click()
    Const DIRETORIO As String = "C:\Users\StarForch\Pictures\"
    Dim CaminhoFoto As String
    Dim NomeFoto    As String
    
    NomeFoto = "Teste.bmp"
    CaminhoFoto = DIRETORIO & NomeFoto
    
    Call Shell(DIRETORIO & "CommandCam.exe /filename " & NomeFoto, vbHide)
    Call Application.Wait(Now + TimeValue("00:00:05"))
 
    Image1.Picture = LoadPicture(CaminhoFoto)
End Sub

 

@Midori Vi que você mencionou sobre meu userform mas, acabei colocando um de Exemplo😔 na vdd não é o que eu desenvolvi para ser usado com a macro. Coloquei ele só de Exemplo mesmo. Mas irei fazer o q me pediu. Pois não é uma má ideia. Logo retorno com notícias kkkk! Muito obrigado!🙏🏻

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!