ShellExecute関数は、環境変数/相対パスにも対応していると思います。
ところでMSDNによると、第4引数はこの場合NULLで終わる文字列へのポインタを格納する必要があります。多分NULLにしてはいけません。
(私のパソコンで1回試してみたら
たまたまうまく動きましたが。)
あとString型の扱いについては
コード:
Sub ZEXEBAK(ZEXE as string, ZPAR as string)
ShellExecute(0,"open",StrPtr(ZEXE),StrPtr(ZPAR),0,SW_HIDE)
End Sub
等とするべきです。(AB3系だと問題なく動いてくれちゃうんですが。)