I did find something that I think I made work (at least it hasn't failed in 24 hours) to pick a file to open. Still looking for same for folder
Option Explicit
'http://www.vbforums.com/showthread.php?400121-Outlook-2003-How-to-show-a-filedialog-from-Outlook
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Declare Function GetOpenFileNameAPI Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Function GetOpenFileName(Optional sFolder As String = vbNullString, _
Optional sMask As String = "CSV Files (*.csv)|*.csv, All files (*.*)|*.*", _
Optional sTitle As String = "Select File to Open") As String
Dim OFName As OPENFILENAME
Dim s As String
With OFName
.lStructSize = Len(OFName)
.hwndOwner = 0
.hInstance = 0
s = sMask
s = Replace(s, ",", Chr(0))
s = Replace(s, "|", Chr(0))
.lpstrFilter = s
.lpstrFile = Space$(254)
.nMaxFile = 255
.lpstrFileTitle = Space$(254)
.nMaxFileTitle = 255
If Len(sFolder) = 0 Then
.lpstrInitialDir = CreateObject("Shell.Application").NameSpace(CVar(0)).Self.Path
Else
.lpstrInitialDir = sFolder
End If
.lpstrTitle = sTitle
.flags = 0
If GetOpenFileNameAPI(OFName) Then
GetOpenFileName = Trim$(.lpstrFile)
Else
GetOpenFileName = vbNullString
End If
End With
End Function