'Powerpoint VBA Select Folder of images, place those images on slides

How can I make the second set of code reference the selection made in the first set, instead of the hard coded location it currently uses? these two sets do exactly what I like and ultimately I want to combine them, but just just cant figure out how to make the second set use the path from the first.. Ive searched for days, and tried everything I could think of. Its got to be 1 simple thing I've overlooked.

    Sub SelectFolder()
    Dim sFolder As String
        ' Open the select folder prompt
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then ' if OK is pressed
                sFolder = .SelectedItems(1)
            End If
        End With

        If sFolder <> "" Then ' if a file was chosen
            ' *********************
            ' put your code in here
            ' *********************
        End If
    End Sub
   

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

    Sub EveryPresentationInFolder()'Performs some operation on every 
                                   'presentation file in a folder adapted from PPTools.com


       Dim sFolder As String      ' Full path to folder we'll examine
       Dim sFileSpec As String      ' Filespec, e.g. *.PNG
       Dim sFileName As String      ' Name of a file in the folder
       Dim oPres As Presentation
       Dim lngSld As Long
       Dim rayNum() As String
       Dim sngL As Single
       Dim sngT As Single
       Dim sngW As Single
       Dim opic As Shape


       sFolder = Environ("USERPROFILE") & "\Desktop\Images\" ' This is where I want the folder ive picked
       sFileSpec = "*.PNG"
       Set oPres = ActivePresentation
       sngL = 0
       sngT = 0.6 * 28.3465
       sngW = oPres.PageSetup.SlideWidth
       sFileName = Dir$(sFolder & sFileSpec)
       While sFileName <> ""
          Debug.Print sFileName
          rayNum = Split(sFileName, ".")
          lngSld = CLng(rayNum(0))
          If lngSld <= oPres.Slides.Count Then
             Set opic = oPres.Slides(lngSld).Shapes.AddPicture(FileName:=sFolder & sFileName, _
                                                       LinkToFile:=False, _
                                                       SaveWithDocument:=True, _
                                                       Left:=sngL, _
                                                       Top:=sngT, _
                                                       Width:=sngW)
             opic.LockAspectRatio = True
             opic.Width = sngW
             opic.Left = 0
             opic.Top = sngT
             opic.ZOrder (msoSendToBack)
          End If
          sFileName = Dir()
       Wend
    End Sub

I took the advice and tried to make the new info work for me. I know its just an ordering of the elements, and I feel like im close, but I don't understand the the problem. why wont this work?

   Function SelectFolder() As String
Dim sFolder As String
    ' Open the select folder prompt
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then ' if OK is pressed
            sFolder = .SelectedItems(1)
        End If
    End With
    If sFolder <> "" Then ' if a file was chosen
        SelectFolder = sFolder
        
    Else
        SelectFolder = ""
    End If

   Dim sFileSpec As String      ' Filespec, e.g. *.PNG
   Dim sFileName As String      ' Name of a file in the folder
   Dim oPres As Presentation
   Dim lngSld As Long
   Dim rayNum() As String
   Dim sngL As Single
   Dim sngT As Single
   Dim sngW As Single
   Dim opic As Shape


   sFolder = SelectFolder ' This is where I want the folder ive picked
   sFileSpec = "*.jpg"
   Set oPres = ActivePresentation
   sngL = 0
   sngT = 0.6 * 28.3465
   sngW = oPres.PageSetup.SlideWidth
   sFileName = Dir$(sFolder & sFileSpec)
   While sFileName <> ""
      Debug.Print sFileName
      rayNum = Split(sFileName, ".")
      lngSld = CLng(rayNum(0))
      If lngSld <= oPres.Slides.Count Then
         Set opic = oPres.Slides(lngSld).Shapes.AddPicture(FileName:=sFolder & sFileName, _
                                                   LinkToFile:=False, _
                                                   SaveWithDocument:=True, _
                                                   Left:=sngL, _
                                                   Top:=sngT, _
                                                   Width:=sngW)
         opic.LockAspectRatio = True
         opic.Width = sngW
         opic.Left = 0
         opic.Top = sngT
         opic.ZOrder (msoSendToBack)
      End If
      sFileName = Dir()
   Wend
End Function


Solution 1:[1]

Re "How do I call the location instead of sFolder=Environ"

Change it to this:

sFolder = SelectFolder

Then change Sub SelectFolder to a Function instead:

Function SelectFolder() as String
    Dim sFolder As String
        ' Open the select folder prompt
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then ' if OK is pressed
                sFolder = .SelectedItems(1)
            End If
        End With

        If sFolder <> "" Then ' if a file was chosen
            SelectFolder = sFolder
            ' *********************
            ' put your code in here
            ' *********************
        Else
            SelectFolder = ""
        End If
    End Function

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 swimfar2