Me alegra ver que lo has solucionado, pero aún así me sigue pareciendo raro que te corte la cadena SQL.
Yo acabo de probar este código (con la SQL de los 700 caracteres y me lista perfectamente todos los registros):
Dim rst As DAO.Recordset
Dim miSQL As String
miSQL = "SELECT TAlumnos.IDAlumno, TMatriculas.IDMatricula, [Apellidos] & ' ' & [Nombre] AS Alumno, " _
& "TAlumnos.Tutor, TMatriculas.FechaMatricula, fncTasaMatricula([FechaMatricula]) AS Matricula, " _
& "fncTasaCurso([Curso],[SegunInstrum],[Col01],[Col02],[Col03],[Col04],[Col05],[Col06],[Col07],[Col08]) AS Materias, " _
& "IIf([Bonificacion]=2,'FN',IIf([Bonificacion]=3,'VM',IIf([Bonificacion]=4,'CE',Null))) AS Bon, " _
& "fncImpBonificacion([Bonificacion],[Materias])+fncImpBonMat([Bonificacion],[Matricula]) AS Descuento, " _
& "IIf([FormaPago]=2,'X',Null) AS Fracciona, [Nombre] & ' ' & [Apellidos] AS AlumnoInf, TMatriculas.Baja, " _
& "[Matricula]+[Materias]+[Descuento] AS Total " _
& "FROM TAlumnos LEFT JOIN TMatriculas ON TAlumnos.IDAlumno = TMatriculas.Alumno " _
& "WHERE ((Not (TMatriculas.IDMatricula) Is Null) AND ((TMatriculas.Baja)=False));"
Set rst = CurrentDb.OpenRecordset(miSQL)
rst.MoveFirst
Do Until rst.EOF
Debug.Print rst("Alumno") & " - " & rst("Matricula")
rst.MoveNext
Loop
rst.Close
Por casualidad, ¿tu SQL tendrá nombres con caracteres "extraños", espacios en blanco, comillas dobles....? Porque puede que el problema venga por ahí... Fíjate que mi SQL tiene comillas simples (por ejemplo aquí IIf([FormaPago]=2,'X',Null) ), y si la SQL la pongo en el Diseñador de consultas, me aparece como IIf([FormaPago]=2,"X",Null), es decir, con comillas dobles.
En cuanto a los nombres con espacios, acentos... debes ponerlos entre corchetes.
A ver si eso te da alguna pistilla de qué puede estar pasando.