What is this supposed to be doing?
 If .Show <> 0 Then 
            SelectedItems(1) = SourceDoc
because it looks like you are trying to set the filepicker output (read only) to be the same as an uninitialized variable (Value = "").

 If .Show <> 0 Then 
            SourceDoc = SelectedItems(1)