PauloMsp 14/7/2023, 20:32
Mudei a estratégia... estou enviando um relatório em branco...
sem usar impressão direta...
configurando a gaveta, ela abre
a dificuldade agora é outra...
colocar um filtro no relatório para imprimir somente a página que desejo...
usando o código que você me mostrou...
adaptado....
Public Function ImprimiRelatorio(ByVal NomeRpt As String, ByVal NumeroImpressora As Integer, ByVal Filtro As Variant)
Dim myFiltro As Variant
Dim j As Byte, st As Boolean, Padrão As String
Dim idx As Byte, prt As Printer
Dim xtrImpressora$
Dim xtrChecka As Variant
myFiltro = Filtro
MsgBox myFiltro
j = 0: st = False
'Padrão = Application.Printer.DeviceName
Padrão = DLookup("impr", "tblimpressora", "[cod]=" & NumeroImpressora & "")
For Each prt In Application.Printers
Debug.Print prt.DeviceName
If prt.DeviceName = Padrão Then idx = j
'If prt.DeviceName = xtrImpressora Then 'a impressora desejada
st = True
Exit For
'End If
j = j + 1
Next
If st = False Then
j = idx 'Se a impressora não for encontrada, imprime na impressora atual, se comentar a linha Exit Function
Exit Function
End If
'DoCmd.OpenReport NomeRpt, acViewPreview, WindowMode:=acHidden 'Abre as etiquetas de forma oculta, criadas no relatorio
DoCmd.OpenReport NomeRpt, acViewPreview, , myFiltro, acHidden
Set Reports(NomeRpt).Printer = Application.Printers(j) 'seta a impressora para as etiquetas
'DoCmd.OpenReport NomeRpt, acViewNormal, , , WindowMode:=acHidden 'Imprime as etiquetas
DoCmd.OpenReport NomeRpt, acViewNormal, , myFiltro
DoCmd.Close acReport, NomeRpt
End Function
quando executo...
imprimi todas as páginas... não somente o filtro que desejo.
por enquanto... grato pela força.