Sporting goods stores. They also have great little fising tackle boxes, which are divided like pill boxes, some have 2 sides and they are waterproof. We love them for taking meds, asprin, antacids, vitamins, sudafed, etc. They also have a great selection of thermos type containers perfect for filling with water or tea from the lido deck, or pouring your "drinks in so they won't get hot or spilled by the pool.
VIKING SERENADE 1993
STAR PRINCESS 2002
NCL STAR 2004
MS OOSTERDAM 2008
The lovely Mrs. Jones (Vita) got hers at Wally World. ie: Walmart. As others have stated, you can get them on the ship as well. Casino has some, and the "Vacation Club" when it was active gave them out. I imagine the pursers desk would have them free as well.
As someone else stated, they have them for free at the Casino and the Vacation desk (when open). However, they totally RUN OUT of them sometimes. So another idea is-- I keep my own from year to year for each trip, since they are pretty durable & sturdy.
I bought a really nice lanyard at an H.E.B. grocery store in central Texas. It has glass beads instead of just ribbon and has a very sturdy plastic cover to put your SS card, credit card, and/or money in. You can put the plastic part inside your shirt and it looks like you are just wearing a cute necklace. I used it on my last cruise, and plan to use it from now on.