There is absolutely no reason to use macro substitution in this code. I corrected your code inline.
>
>
>LOCAL lcDirPath, lcCurrentDir, oShell, oDstFolder
>
> With ThisForm
> lcCurrentDir = ALLTRIM(SYS(5))+ALLTRIM(SYS(2003))
> lcDirPath = ALLTRIM(.txtDirPath.Value)
> IF EMPTY(m.lcDirPath)
> Messagebox("Directory Pathname is Empty",0+16,"Invalid Entry")
> Exit
> ENDIF
> IF .NOT. DIRECTORY(lcDirPath)
> Messagebox("Directory " + m.lcDirPath + " Not Found!",0+16,"Invalid Entry")
> Exit
> ENDIF
> SET SAFETY OFF
> oShell = CREATEOBJECT("Shell.Application")
> oDstFolder = oShell.NameSpace(CurrentDir+"\datafile")
> IF VARTYPE(oDstFolder)="O"
> oDstFolder.CopyHere(lcDirPath+"\*.*")
> ENDIF
> SET SAFETY On
>
>>
>
If it's not broken, fix it until it is.
My Blog