rs2 is define outside the initial loop. Here is the full code (minus all the extraction and dynamic stuff). Note that most of the inner loop is commented out at this point as I try to simply get the one line to work.
' Open a connection to the database
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("XXXX.accdb") & ";Persist Security Info=False;"
Set rs = CreateObject("ADODB.Recordset")
' Select all the PCs and NPCs
SQL = "SELECT *, Party.PartyName"
SQL = SQL & " FROM People INNER JOIN Party ON People.PartyID = Party.PartyID"
SQL = SQL & " ORDER BY Party.SortBy, People.Rank"
rs.Open SQL, con
Do While not rs.EOF
' extract data as needed from record set 1
SQL2 = "SELECT Skills.SkillName, PersonalSkills.SkillID, PersonalSkills.SkillLvl"
SQL2 = SQL2 & " FROM Skills INNER JOIN PersonalSkills ON Skills.SkillID = PersonalSkills.SkillID"
SQL2 = SQL2 & " WHERE PersonalSkills.PeopleID = " & rs("PeopleID")
rs2.Open SQL2, con <=== BLOWS UP ON THIS LINE!!!
' Do While not rs2.EOF
' ' Get a character's skills
' Set rs2 = Nothing
Set rs = Nothing
Set con = Nothing