Bom dia, Fábio.
Acho que o esquema é bom, mas creio que usar um identificador ao invés do nome seria melhor. Você não guarda o código (ID) deste cadastro também? Caso positivo você poderia usá-lo...Sim, guardo e também acho que o ideal seria usar o ID que é a chave primária o que me deixaria, por tanto, livre de preocupação com dado repetido. Mas estou optando por não usar o ID por que no sistema inteiro ele nunca aparece pro usuário e aparecer aqui acho que ficaria meio desconfortável, já que o usuário nem sabe da existência de um código.
O bom mesmo seria o usuário clicar no nome e o sistema trabalhar com o ID referente ao nome que ele clicou, mas não vejo como fazer isso.
Mas tudo bem - agora que você me mostrou como resolver a questão dos acentos, no BeforeNavigate2 do WebBrowser, assim como elimino o parte "vfp://" da URL, substituo, também, os "%20" por " " e sigamos em frente, Veja:
LPARAMETERS pdisp, url, flags, targetframename, postdata, headers, cancel
If Left(url, 6) = "vfp://"
Cancel = .T.
Local lcConta, lcMetodo
lcConta = Strtran(url, "vfp://", "")
lcConta = Strtran(lcConta, "/", "")
lcConta = Strtran(lcConta, "%20", " ")
lcMetodo = "this.Parent.Abrir" + Transform(this.Parent.pgfExterno.pgImportar.opgOrigem.Value + 4)
&lcMetodo(lcConta)
EndIf