Take a look at the following code. You can place it in a click event to visualize what looping through your multiselection list box looks like.
Code:
Private Sub cmdTEst_Click()
Dim strEmail As String
Dim varItem As Variant
For Each varItem In Me.lstCategory
strEmail = strEmail & Me.lstCategory.Column(1, varItem) & " "
Next varItem
MsgBox strEmail
End Sub
Then maybe you could incorporate something like this. You will have to match data types for your where clause in the open report thing.
Code:
Dim lngEmailID As Long
Dim varItem As Variant
For Each varItem In ctlList.ItemsSelected
lngEmailID = Me.lstCategory.Column(0, varItem)
DoCmd.OpenReport "rptBookingEmailBatchPDF", acViewPreview, , "PrimeKey =" & lngEmailID
DoCmd.SendObject acSendReport, , "PDFFormat(*.pdf)", Me.txtEmail, , , , , True
Docmd.CloseReport "rptBookingEmailBatchPDF"
Next varItem