- 31 Mar 2021 às 10:11
#63424
Bom dia!
Estou com dificuldade numa macro de importação de imagens de uma pasta e para o Excel.
Estou com a seguintes dificuldades:
1) A primeira imagem "setada" na célula B2 não está redimensionando corretamente .Placement = 1 e deveria ser 2.
2) Ao fazer o Loop ele não esta buscando a próxima imagem da pasta.
3) As imagens devem ser posicionadas no Excel na seguinte ordem (Sequencia): B2 > D2 > B5 > D5 > B8 > D8 > B11 > D11.
4) Entrando em Loop Infinito.
Segue abaixo o código.
Eduardo
Estou com dificuldade numa macro de importação de imagens de uma pasta e para o Excel.
Estou com a seguintes dificuldades:
1) A primeira imagem "setada" na célula B2 não está redimensionando corretamente .Placement = 1 e deveria ser 2.
2) Ao fazer o Loop ele não esta buscando a próxima imagem da pasta.
3) As imagens devem ser posicionadas no Excel na seguinte ordem (Sequencia): B2 > D2 > B5 > D5 > B8 > D8 > B11 > D11.
4) Entrando em Loop Infinito.
Segue abaixo o código.
Código: Selecionar todos
Grato!Public Caminho As String
Public Quantidade As Long
Public fso As Object 'Scripting.FileSystemObject
Public fsoFolder As Object 'Scripting.Folder
Sub SelecionarPasta()
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
If .SelectedItems.Count > 0 Then
Caminho = .SelectedItems(1)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsoFolder = fso.GetFolder(Caminho) 'csDirectory
Quantidade = fsoFolder.Files.Count
End If
'MsgBox "O diretório " & Caminho & " possui " & fsoFolder.Files.Count & " imagens.", vbInformation
End With
Worksheets("Fotos").Range("F1").Value = Caminho + "\"
Worksheets("Fotos").Range("G1").Value = Quantidade
ImportarFotos
'MsgBox "Pasta selecionada! " & Caminho, vbInformation, "PASTA"
End Sub
Sub ImportarFotos()
Dim NomeDoArquivo As String
Dim Imagem As Picture
Dim rngCell As Range
Dim i As Integer
Dim e As Integer
Caminho = Worksheets("Fotos").Range("F1").Value
Quantidade = Worksheets("Fotos").Range("G1").Value
Set rngCell = Range("B2") 'A primeira imagem "setada" na celula B2 não está redimensionando.
NomeDoArquivo = Dir(Caminho & "*.jpg", vbNormal) 'Ao fazer o Loop ele não esta buscando a próxima imagem da pasta.
Do While Len(Quantidade) > 0 'Limitar a 8 imagens ou ao valor da variavel Quantidade, o que for menor.
If (i <= Quantidade) Then
Set Imagem = Worksheets("Fotos").Pictures.Insert(Caminho & NomeDoArquivo)
With Imagem
.Left = rngCell.Left
.Top = rngCell.Top 'As imagens não estão sendo redimensionadas.
.Height = rngCell.Height
.Placement = xlMoveAndSize
End With
Set rngCell = rngCell.Offset(3, 0) 'a ordem de preenchimento deve ser por linha. Sequencia B2 > D2 > B5 > D5 > B8 > D8 > B11 > D11.
i = i + 1
Else
Set rngCell = rngCell.Offset(1, 0)
i = 0
End If
Loop 'Entrando em Loop Infinito. Antes de executar, marcar ponto de interrupção.
MsgBox "Imagens copiadas com sucesso!", vbInformation, "IMPORTAÇÃO"
End Sub
Eduardo
Você não está autorizado a ver ou baixar esse anexo.