A lot of programmers fall into this track because they have not been given the opporunity to develop or learn new skills. If the company only expects this person to keep grinding out the same old Fortran/Cobol/VisualBasic code and never gives them chances at learning, then the company gets what it deserves: a problem employee.
My suggestion: give the person opportunities and work time to develop. An employee is a long-term investment - if this works, you'll get a better employee. Remember that this person has lots of business knowledge that they bring to the table and some sort of track record better than a new hire.
What if it doesn't work? The dude isn't interested in learning anything new. Well, what you describe is potentially a problem employee. The type of employee that insists on using stinky old technology without justifying it with any sort of valid analysis. The sort of employee that says "If it isn't written in VisualBasic, you'll have to find someone else to run the project." The answer to this is REMOVAL FROM ROLE. If you can't fire them send them off to some dead-end part of the company where they can do less harm: you know, Human Resources, Facilities, Projects...