Добавить каждый файл в папке - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь сделать макрос, который позволяет пользователю выбрать папку с большим количеством папок внутри, в этих папках могут быть изображения .jpg или .png. То, что я хочу, это то, что макрос добавляет только файлы изображений в Excel, любой файл изображения. Сейчас он добавляет изображения, но только если они имеют имена 1.jpg, 2.jpg, 3.jpg и так далее.

Dim Secfolder As String
MsgBox ("Busque y seleccione la carpeta que contiene las carpetas de los sectores en el punto que realizará.")
With Application.FileDialog(msoFileDialogFolderPicker)

.Title = "Buscar carpeta"
.ButtonName = "Aceptar"
.InitialFileName = "C:\"

If .Show = -1 Then
 Secfolder = .SelectedItems(1)
End If

Sheets("Matriz_de_Hallazgos").Select

l = 1

For i = 1 To 200
idm = (Worksheets("Matriz_de_Hallazgos").Cells(i + 2, 1))

If idm = 1 Then
Application.SpellingOptions.IgnoreCaps = True
 ' Colocar la ruta de las fotos; las fotos deben llamarse como números. Ej: 1.jpg'
    RutaCompleta = Secfolder & "\" & "sector " & idm & "\" & l & ".jpg"
    ActiveSheet.Cells(i + 2, 3).Select
    With ActiveSheet.Shapes.AddPicture(Filename:=RutaCompleta, linktofile:=msoFalse, _
        SaveWithDocument:=msoCTrue, Left:=0, Top:=0, Width:=0, Height:=0)
        .LockAspectRatio = 0
        .Top = ActiveCell.Top
        .Left = ActiveCell.Left
        .Width = ActiveCell.Width
        .Height = ActiveCell.Height
    End With
    l = l + 1
End If
Next i

Есть идеи? Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Это добавление 1.jpg,2.jpg et c. потому что вы использовали переменную l в следующей строке.

RutaCompleta = Secfolder & "\" & "sector " & idm & "\" & l & ".jpg"

Вы должны будете использовать фактическое имя файла вместо l переменной.

Вы можете использовать следующее для l oop через файлы для выбранной папки.

FolderName = "D:\" 'Replace it with selected folder
Set FSOLibrary = CreateObject("Scripting.FileSystemObject")
Set FSOFolder = FSOLibrary.GetFolder(FolderName)
Set FSOFile = FSOFolder.Files
'Use For Each loop to loop through each file in the folder
For Each FSOFile In FSOFile
    'Insert actions to be perfomed on each file
    MsgBox FSOFile.Name
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...