You can do this more simply with:
ActionMenu["Choose a File...", {
"nb1.nb" :> NotebookOpen[FileNameJoin[{NotebookDirectory[], "nb1.nb"}]],
"nb2.nb" :> NotebookOpen[FileNameJoin[{NotebookDirectory[], "nb2.nb"}]],
"nb3.nb" :> NotebookOpen[FileNameJoin[{NotebookDirectory[], "nb3.nb"}]]}]
or if you want to dynamically create the actions:
Module[{nblist = {"nb1.nb", "nb2.nb", "nb3.nb"}},
ActionMenu["Choose a File...",
MapThread[
RuleDelayed, {nblist,
Unevaluated[
NotebookOpen[FileNameJoin[{NotebookDirectory[], #}]]] & /@
nblist}] ]]
The Action Menu list is created by joining the file path to each filename in the list, nblist. The NotebookOpen command must be delayed (with Unevaluated) or it tries to act immediately. The MapThread[RuleDelayed... creates the list of rules so it looks like the first version.
Some other interface wizards on this forum may be able to make this even simpler, but that is my first take...
Regards