I have been in a similar position with an employee, and will pass along what little wisdom I have gained from the experience:
1. Your heart is in the right place by wanting to help him, but it is probably too late. He is augering in fast if he is skipping work, and unless he is truly serious and asking you for help you will end up firing him. If he seems halfhearted about cleaning up, get rid of him now and save yourself the hassle.
2. If you do decide to keep him, immediately remove him from any work duties involving machinery, automobiles, inventory, or financial transactions. Give him a (short) time limit to enter treatment, and demand documentation of his continued participation. Make sure he understands that he has ONE chance to clean up. Random drug tests are a possibility, but you must be careful to follow any legalities concerning worker's rights and privacy. Consult an attorney versed in workers rights laws in your state.
3. Make sure you understand one thing - now that you are aware of his impairment, you will be held liable for any damage or injury done by him while on the clock or using any company equipment. Regardless of #1 or #2 above, weigh that liability carefully and cut him loose if his value to your company does not compensate.
FWIW, I ended up firing my employee. I run a pharmacy, and mainly due to #3 above I cut her loose. Drug users working in a pharmacy is not justifiable from a liability viewpoint, too many worries about theft.
Good luck.