We want to go from Venice to Ljubljana (but we are happy to go through Piran or somewhere, if that's a nicer way to do it.) We won't have a car, and we're planning to go in early September. What's the easiest (or nicest) way to do it?
There are no direct trains from Slovenia to Italy unfortunately there are gaps that you have to navigate. To get around the poorer railway connection to Italy, travelers can board a train from points in Italy to Gorizia and then take a bus, or walk to its neighbouring town Nova Gorica Slovenia. Its about a mile. Use the DB Bahn rail site, in English, to plan your trip.
I sometimes use GoOpti airport shuttle when going to Venice Airport from Ljubljana. It's very cheap. Last time when I was flying to US from Venice airport it took me just 44 EUR. That was a price for both directions.
I think the best option is to go by car, since you have the most of your trip that way. Slovenia is quite beautiful coutry and it really is good to travel here by car. But if you don't have a car, this might be a good option as well: http://www.slo-zeleznice.si/en/passengers/abroad/destinations/italy
Take a local train from Stazione di Venezia Santa Lucia to Trieste (no need to book, just buy the ticket from a machine on the day of travel). From Trieste station walk ten minutes to Piazza Guglielmo Oberdanand take bus 4 to Villa Opicina (it's on the border of Slovenia and Italy, just inside Italy). Get off the bus in Via di Prosecco. From the bus stop walk ten minutes to Opicina train station. From Opicina catch a train to Ljubljana. There are two direct trains each day, one departing 13.27 and one departing at 17.40 - journey takes about two hours. No need to book, buy the ticket on the train. If these two times are unsuitable, there are regular trains from Sezana, the border town on the Slovenian side, to Ljubljana, so take a taxi from Opicina to Sezana and pick up a train from there. It's a very scenic route, but take provisions as there's no buffet car on the train (or on the one from Venice to Trieste either).
Mentioned in this answer: