Let's try this:
Const pth = "D:\Backgrounds\"
Const mfPttrn = "*.jpg"
Private i As Integer, rn As Integer
Private TimeToRun As Date
Private fleTbl
Sub file_names()
Dim fle As String
i = CreateObject("Scripting.FileSystemObject").GetFolder(pth).Files.Count
ReDim fleTbl(1 To i, 1 To 2)
i = 0
fle = Dir(pth & mfPttrn, vbNormal)
Do Until fle = ""
i = i + 1
fleTbl(i, 1) = i
fleTbl(i, 2) = pth & fle
fle = Dir()
Loop
End Sub
Sub Macro1()
Randomize
rn = Int(UBound(fleTbl, 1) * Rnd + 1)
ActiveSheet.SetBackgroundPicture Filename:=fleTbl(rn, 2)
ActiveSheet.Range("A1") = FilenameFromPath(fleTbl(rn, 2))
TimeToRun = Now + TimeValue("00:00:10")
Application.OnTime EarliestTime:=TimeToRun, Procedure:="Macro1"
End Sub
Public Function FilenameFromPath(path As String) As String
Dim S As String
Dim V As Variant
' Make sure all separators are the same
path = Replace(path, "/", "\")
V = Split(path, "\")
FilenameFromPath = V(UBound(V))
End Function
Bookmarks