Ir para conteúdo
Fórum Script Brasil
  • 0

atualizar endereço de uma foto em uma célula por código


samara.vba

Pergunta

boa tarde.

estou com um problema. fiz um cadastro de cliente com foto.

esta foto é salva em uma célula com o caminho que ela esta.

estou precisando de um código que atualize este endereço ao passar esta pasta para outro computador.

computador 01: c:\joão

pasta x: contém 01 pasta com fotos e o arquivo do excel.

célula: c:\joão\área e trabalho\pasta x\fotos\01.jpg

ao mudar os arquivos para outro computador gostaria que esse caminho da célula atualizasse para o novo local.

computador 02: d:\maria

célula: c:\joão\área e trabalho\pasta x\fotos\01.jpg >>>> d:\maria\área e trabalho\pasta x\fotos\01.jpg

 

desde já agredeço

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0
Em 25/03/2022 em 16:35, Basole disse:

@samara.vbanão entendi sua questão  

seguinte.

tenho um cadastro de clientes com fotos no excel.

e ao cadastrar o caminho de uma foto, ela fica registrada ao lado do nome da pessoa exemplo:

computador 01: c:\joão\área de trabalho

célula A1                   célula B1

Fernanda                  c:\joão\área de trabalho\excel\fernanda.jpg

ao mudar o arquivo de computador: o caminho fica como se fosse o computador 01 e não localiza o local do arquivo.

computador 02: d:\maria\área

célula A1              célula B1

Fernanda             c:\joão\área de trabalho\excel\fernanda.jpg

queria uma código que atualizasse esse caminho automaticamente ou por meio de um botão para:

célula A1       célula B1

Fernanda       d:\maria\área\excel\fenanda.jpg.

Agora, samara.vba disse:

seguinte. @Basole

tenho um cadastro de clientes com fotos no excel.

e ao cadastrar o caminho de uma foto, ela fica registrada ao lado do nome da pessoa exemplo:

computador 01: c:\joão\área de trabalho

célula A1                   célula B1

Fernanda                  c:\joão\área de trabalho\excel\fernanda.jpg

ao mudar o arquivo de computador: o caminho fica como se fosse o computador 01 e não localiza o local do arquivo.

computador 02: d:\maria\área

célula A1              célula B1

Fernanda             c:\joão\área de trabalho\excel\fernanda.jpg

queria uma código que atualizasse esse caminho automaticamente ou por meio de um botão para:

célula A1       célula B1

Fernanda       d:\maria\área\excel\fenanda.jpg.

 

Link para o comentário
Compartilhar em outros sites

  • 0

@samara.vba bom dia ! 

Voce pode concatenar os dados junto com a função (udf), abaixo para retornar o usuário da máquina atual:

Exemplo:

Na célula B1 =>  

=Usuario() & "\desktop\excel\" &A1& ".jpg"

 

A função abaixo cole em um mólulo padrão:

Function Usuario()

Usuario = VBA.Environ("USERPROFILE")

End Function

 

Editado por Basole
Link para o comentário
Compartilhar em outros sites

  • 0
3 horas atrás, Basole disse:

@samara.vba bom dia ! 

Voce pode concatenar os dados junto com a função (udf), abaixo para retornar o usuário da máquina atual:

Exemplo:

Na célula B1 =>  

=Usuario() & "\desktop\excel\" &A1& ".jpg"

 

A função abaixo cole em um mólulo padrão:

Function Usuario()

Usuario = VBA.Environ("USERPROFILE")

End Function

 

 

3 horas atrás, Basole disse:

@samara.vba bom dia ! 

Voce pode concatenar os dados junto com a função (udf), abaixo para retornar o usuário da máquina atual:

Exemplo:

Na célula B1 =>  

=Usuario() & "\desktop\excel\" &A1& ".jpg"

 

A função abaixo cole em um mólulo padrão:

Function Usuario()

Usuario = VBA.Environ("USERPROFILE")

End Function

 

@Basole MUITOOO OBRIGADA DEU SUPER CERTO. JUSTAMENTE O QUE EU ESTAVA PRECISANDO.

MIL AGRADECIMENTOS.

@Basole, NÃO QUERENDO ABUSAR,  mas já abusando (rsrsr). tem algum código que eu possa salvar somente o caminho da pasta do arquivo? para cocatenar com esse vba.environ? em uma célula ?

Link para o comentário
Compartilhar em outros sites

  • 0
12 minutos atrás, samara.vba disse:

 

@Basole MUITOOO OBRIGADA DEU SUPER CERTO. JUSTAMENTE O QUE EU ESTAVA PRECISANDO.

MIL AGRADECIMENTOS.

@Basole, NÃO QUERENDO ABUSAR,  mas já abusando (rsrsr). tem algum código que eu possa salvar somente o caminho da pasta do arquivo? para cocatenar com esse vba.environ? em uma célula ?

@Basole

computador: c:\maria

célula A1                     célula B1                                     célula C1

c:\maria                  \pasta1\farnanda.jpg                c:\maria\pasta\fernanda.jpg

=usuário()                     ?????                                      =A1 & B1

vba.environ                   ?????

Link para o comentário
Compartilhar em outros sites

  • 0

Você pode colocar um comando para quando abrir a Pastade_Trabalho, automaticamente, já inserir o caminho na celula [ C1 ], por exempo:

 

Em um módulo padrão:

 

Sub Auto_Open()

    With Worksheets("Plan1")
    .Range("C1").Value = VBA.Environ("USERPROFILE") & _
    "\Desktop\Excel\" & Range("A1").Value & ".jpg"
    End With
    
End Sub

 Não sei é isso exatamente, que que está se referindo...

Editado por Basole
Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Basole disse:

Você pode colocar um comando para quando abrir a Pastade_Trabalho, automaticamente, já inserir o caminho na celula [ C1 ], por exempo:

 

Em um módulo padrão:

 

Sub Auto_Open()

    With Worksheets("Plan1")
    .Range("C1").Value = VBA.Environ("USERPROFILE") & _
    "\Desktop\Excel\" & Range("A1").Value & ".jpg"
    End With
    
End Sub

 Não sei é isso exatamente, que que está se referindo...

@Basole acho que me expressei mal. seguinte:

nome: textbox1 =======fernanda

foto: image1.picture.======c:\maria\programa\foto1.jpg                         vamos supor que esse é meu formulário:

ao clicar no botão salvar:

computador : c:\maria

célula A1                  célula B1             célula C1

fernanda                  c:\maria              \programa\foto1.jpg

se teria um código para quando eu licar no botão salvar ele divida o caminho em duas partes:

parte 1 (célula B1) ====== só o usuário - c:\maria

parte 2(célula C1) ====== só a parte do caminho começando pela pasta, ou seja, sem o usuário. - \programa\foto1.jpg

mas isso levando em consideração que é um form. e que será salvo um embaixo do outro, toda vez que clicar no botão salvar. automatizar essa divisão.

Link para o comentário
Compartilhar em outros sites

  • 0

@samara.vba entendi agora.

Deixa eu ver aqui.....

 

@samara.vba fiz um exemplo aqui, veja se é isso...

   ....sempre vai salvar na próxima linha vazia

Sub Botao_Salvar()

    With Worksheets("Plan1")
        .Cells(.Cells(Rows.Count, 2).End(xlUp).Offset(1).Row, 2).Value = VBA.Environ("USERPROFILE")
        .Cells(.Cells(Rows.Count, 3).End(xlUp).Offset(1).Row, 3).Value = "\Desktop\programa\foto1.jpg"
    End With


End Sub

 

Editado por Basole
Link para o comentário
Compartilhar em outros sites

  • 0
6 horas atrás, Basole disse:

@samara.vba entendi agora.

Deixa eu ver aqui.....

 

@samara.vba fiz um exemplo aqui, veja se é isso...

   ....sempre vai salvar na próxima linha vazia

Sub Botao_Salvar()

    With Worksheets("Plan1")
        .Cells(.Cells(Rows.Count, 2).End(xlUp).Offset(1).Row, 2).Value = VBA.Environ("USERPROFILE")
        .Cells(.Cells(Rows.Count, 3).End(xlUp).Offset(1).Row, 3).Value = "\Desktop\programa\foto1.jpg"
    End With


End Sub

 

@Basole obrigada. quase isso.

só essa parte do código que representa a parte do arquivo. preciso que ela seja preenchida de acordo com caminho da foto que vou carregar no: openfile. na image. o caminho da foto que será preenchido, mas sem o dire´torio.

Link para o comentário
Compartilhar em outros sites

  • 0

@samara.vbabom dia,

Acredito que voce já tenha um codigo para selecionar a foto. De qualquer forma pode adaptar ao exemplo abaixo:

 

Sub Botao_Salvar()

    Dim fd          As Office.FileDialog
    Dim strFile     As String

    Set fd = Excel.Application.FileDialog(msoFileDialogFilePicker)

    With fd

        .Filters.Clear
        .Filters.Add "Arquivos de Imagens", "*.jpg", 1
        .Title = "Selecione uma imagem"
        .AllowMultiSelect = False

        .InitialFileName = VBA.Environ("USERPROFILE") & "\Desktop"

        If .Show = True Then

            strFile = .SelectedItems(1)

        End If

    End With


    With Worksheets("Plan1")
        .Cells(.Cells(Rows.Count, 2).End(xlUp).Offset(1).Row, 2).Value = VBA.Environ("USERPROFILE")
        .Cells(.Cells(Rows.Count, 3).End(xlUp).Offset(1).Row, 3).Value = VBA.Replace(strFile, VBA.Environ("USERPROFILE"), "")
    End With

End Sub

 

Link para o comentário
Compartilhar em outros sites

  • 0

@Basole estou quase conseguindo. mais de mês que esse problema me assola.

vou explicar direitinho.

tenho um app vba que salva o cadastro com uma foto.

#o meu problema é: que quando mudo o app para outro pc, o caminho da foto fica desatualizado, logo não exibe mais a foto

no fomrulário quando se quer pesquisar.

preciso de um comando que: individualize as partes do caminho para futura atualização.

ou mesmo um comando que atualize ao abrir o excel. por exemplo.

computador 1 >>>>> c:\maria\desktop\app\foto\imagem.jpg. [este é o caminho da foto do cadastro]

#o meu problema é: quando passo essa planilha com a pasta para outro computador. o caminho fica desatulizado.

computador 2 >>>>>d:\joão

o caminho fica : >>>> c:\maria\desktop\app\foto\imagem.jpg<<< logo, a foto não aparece na imagem do app vba.

**********************o que eu peço ajuda:******************************************************

que quando, eu mude essa planlha para outra máquina, o endereço atualize:

computador 1: >>> c:\maria\desktop ------ endereço: >>>>>c:\maria\desktop\app\foto\imagem.jpg

ao mudar

computador 2: >>>d:\joão\area de trabalho -------endereço atualize para : >>>>> d:\joão\area de trabalho\app\foto\imagem.jpg

*********************************ou em segundo caso:******************************************

um comando que ao clicar salvar foto na planilha separe:

caminho : c:\maria\desktop\app\foto\imagem.jpg

parte 1: >>> c:\maria\desktop

parte 2: >>> app\foto\imagem.jpg ou então : >>>>imagem.jpg

desde já agradeço a atenção está me ajudando demais.

Link para o comentário
Compartilhar em outros sites

  • 0

@samara.vbabom dia, a funcão VBA.Environ("USERPROFILE"), com o parametro USERPROFILE, referência a unidade ( C:, D:, N:, ... Z: etc )  e o USUARIO logado na maquina, por exemplo:  C:\maria

O que pode fazer, por exemplo, é ao abrir a pasta de trabalho a macro, no auto_open grava em uma celula essa referencia e o demais parametros (subpastas), do local (diretório) da imagem, exemplo:  

"\Desktop\app\foto\imagem.jpg" 

Então quando abrir a pasta de trabalho no computador 1 (usuario maria) na celula A1 será registrado o local da imagem como: C:\maria\area de trabalho\app\foto\imagem.jpg" 

E o mesmo no computador 2 (usuario João) na celula A1 será registrado o local da imagem como: C:\João\area de trabalho\app\foto\imagem.jpg" 

Feito isso, com esse registro voce pode referenciar esta célula gravada com o caminho(local) da imagem para demais macros que precisam referenciar a imagem

Segue o exemplo com o evento auto_open 

* Cole em um modulo padrão, alterando a planilha (aba) e a range (celula), e o caminho das subpastas, de acordo com o seu cenário:

 

Private Sub Auto_Open()

    With ThisWorkbook.Worksheets(1)
        Range("A1").Value = VBA.Environ("USERPROFILE") & "\Desktop\app\foto\imagem.jpg"
    End With

End Sub

 

Qualquer dúvida estou a disposição:

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...