He is both, an amalgam. Macbeth is Shakespeare's greatest tragedy in which the hero is (or turns) villain. In other plays, like Othello, the hero (Othello) is separate from the villain (Iago). Macbeth best expresses man's duality, his divided self.
We only hear of Macbeth's heroism by the Bleeding Captain. He tells of Macbeth's bravery during the battle, how be "doubly redoubled strokes upon the foe." For a Thane to brutally kill his enemy as allegiance to King and country was considered heroic. If you think about it, it's still murder. Macbeth does to Macdonwald what he does to Duncan, Banquo, the Macduffs, and Young Siward. But he does it according to the rules of combat, of comitatus (the King-Thane bond). He kills a traitor to protect Duncan.
Remember, we only hear of his heroism. We never actually see him do anything heroic the entire play. What speaks louder: words or actions? So, is Macbeth of Act I (the hero) different from the Macbeth of Act II - V (the villain)?
What moves him certainly into the villain category is regicide. Killing the king was the most heinous crime one could commit. It's worse than Oedipus' incest. It throws the natural order into chaos. It's like killing God, for James I believed in the Divine Right of Kings.
Macbeth is a villain in that he moves from loyal to murderous toward the King, but you can't tell me that he didn't suddenly obtain "vaulting ambition" once he met the witches. It was always there. The witches and Lady Macbeth function like his subconscious "id": they are tangible forms of his already present desires. They expedite time: moving him from hero to villain sooner than later.
So, he may have been heroic outwardly, but he may have always been inwardly a villain in that he wanted to be king, whether he admitted it to himself or not. His public persona may mask his private desires. His inner will remains ambiguous because we never get the scene between Lady Macbeth and Macbeth in private before they conspire to kill the king.