Consegui o código abaixo, após a adequação, o mesmo funcionou na planilha. A foto carrega normalmente, inclusive a célula de destino e o dimensionamento. No entanto, logo em seguida dá mensagem "Erro em tempo de execução '52':", "Nome ou número de arquivo incorreto", quando é aberto o depurador, é destacada a linha "sExiste = Dir(CaminhoEFoto)", o estranho, é que a foto carrega, contudo, "MsgBox "Importação de Fotos concluída!"", não é carregada, abaixo o código:
Sub CarregaFotoPesquisas()
' Definição de variáveis
'
Const Caminho As String = "D:DocumentsSEAFROCRHFotos"
Dim CaminhoEFoto As String
Dim Foto As String
Dim Linha As Integer
Dim iLinha As Integer
Dim NumeroEmpregado As String
Dim sExiste As String
'
' Desliga o update do ecran
'
Application.ScreenUpdating = False
'
' Apaga as fotos existentes
'
Linha = 1
iLinha = 6
'
' Importa as Fotos
'
Do
' Testa se existe o empregado seguinte
If Trim(ActiveSheet.Cells(Linha, 9).Value) = "" Then Exit Sub
' Tira o número de empregado da célula correspondente
NumeroEmpregado = ActiveSheet.Cells(Linha, 9).Value
' Atribui o nome do ficheiro
Foto = NumeroEmpregado & ".bmp"
' Concatena o caminho com o nome do ficheiro
CaminhoEFoto = Caminho & Foto
' Testa se existe o ficheiro
sExiste = Dir(CaminhoEFoto)
If sExiste <> "" Then
' Aumenta o tamanho da Linha
Rows(iLinha).RowHeight = 53.25
' Selecciona a célula para colar a foto
ActiveSheet.Cells(iLinha, 1).Select
' Insere a foto
With ActiveSheet.Pictures.Insert(CaminhoEFoto)
' Ajusta a foto ao topo da célula
.Top = ActiveSheet.Cells(iLinha, 1).Top
' Ajusta a foto à esquerda da célula
.Left = ActiveSheet.Cells(iLinha, 1).Left
' Ajusta a altura da foto à altura da célula mantendo o Racio da largura
.ShapeRange.Height = ActiveSheet.Cells(iLinha, 1).RowHeight
End With
Else
' Faz a mesma coisa do bloco anterior mas testa se não existe o ficheiro em JPEG
Foto = NumeroEmpregado & ".jpg"
CaminhoEFoto = Caminho & Foto
If Dir(CaminhoEFoto) <> "" Then
Rows(iLinha).RowHeight = 53.25
ActiveSheet.Cells(iLinha, 1).Select
With ActiveSheet.Pictures.Insert(CaminhoEFoto)
.Top = ActiveSheet.Cells(iLinha, 1).Top
.Left = ActiveSheet.Cells(iLinha, 1).Left
.ShapeRange.Height = ActiveSheet.Cells(iLinha, 1).RowHeight
End With
Else
' Caso não existe o ficheiro, transmite esta mensagem
MsgBox "O empregado com o número " & NumeroEmpregado & " não tem Foto!"
End If
End If
Linha = Linha + 1
iLinha = iLinha + 1
Loop
'
' Liga o update do ecran
'
Application.ScreenUpdating = True
'
' Mensagem quando termina a importação das fotos.
'
MsgBox "Importação de Fotos concluída!"
End Sub
Se alguém puder ajudar, ficarei muito grato. E, se não for pedir muito, já me ajudarem com o código para "apagar" a foto da planilha para gerar novo relatório.
Postado : 21/02/2017 6:52 pm