Eu utilizo o Print para emissão de NF e boletas. è mais trabalhoso mas muito mais fácil para dar manutenção:
Vou tentar dar um exemplo resumido aqui:
Primeiro defina quantas páginas vai dar da seguinte forma:
vQuebra = 17 'A quantidade de linhas de detalhe da sua nota
vTotReg = SeuBanco.RecordCount 'Defina a quantidade de registros da NF
vQtdPag = Int(vTotReg / vQuebra) + 1 'Define a quantidade de páginas da NF
vContPag = 1 'Inicializa o contador de páginas
vNum = FreeFile
Open "LPT1:" For Output As #vNum
Call ImprimeCabNF() 'Chama sua rotina de Impressão de cabeçalho da NF
vTotalNF = 0
vLinhaNF = 0
vTotalPrdNF = 0
With TBItemRel
If .RecordCount Then
.MoveMin
Do While Not .EOF
Print #vNum, !CpdSit; Tab(19); RemoveAcentos(Mid(!DescricaoPrd, 1, 56)); _
Tab(77); vCodSitTribut; _
Tab(83); Unidade; _
Tab(90); Format(!Qtd, "#,##0.00"); _
Tab(103); Format(!ValUnitario, "#,##0.00"); _
Tab(120); PosPrint(Format(!VtoSit, "#,##0.00"), 12)
vTotalPrdNF = vTotalPrdNF + (!QtdSit * !VupSit)
vTotalNF = vTotalNF + !VtoSit
vLinhaNF = vLinhaNF + 1
.MoveNext
If vLinhaNF = vQuebra And NOT .EOF Then
vContPag = vContPag + 1
'Imprime rodapé intermediario da Nota
Call ImprimeRodNF(False)
vLinhaNF = 0
Call ImprimeCabNF()
End If
Loop
End If
End With
'Imprime rodapé FINAL da Nota
Call ImprimeRodNF(True)
close TBItemRel
close #vNum
Vc pode passar um parametro na hora de imprimir o cabeçalho ou o rodapé para determinadas tarefas, como só imprimir o Total na ultima pagina da NF, imprimir os dados da duplicata somente no cabeçalho da ultima página, etc...
Tá bem resumido aí em cima, é só para se ter uma idéia.
Em caso de duvidas, entre em contato...