RESPUESTA A LA PREGUNTA 9658 - VISUAL BASIC Imprimir archivos "PRN" Los archivos PRN son trabajos de impresora generados por Windows en conjunto con el Driver de alguna Impresora. Para generarlos, creamos una Impresora con salida a archivo. Así, podemos generar un archivo de impresora en vez de enviar directamente la salida a Printer. El siguiente procedimiento ejecuta la tarea de Impresión: Private CancelPrinting As Boolean Private Sub PrintPRNFile(PRNFile As String) Const Buffer As Long = 8192 Dim Chunk As String Dim numLoops As Long Dim LeftOver As Long Dim i As Long Dim FCnl As Long Dim PCnl As Long On Error GoTo SubErr '//Abre el archivo y el port de impresora Screen.MousePointer = vbHourglass CancelPrinting = False FCnl = FreeFile Open PRNFile For Binary Access Read As #FCnl PCnl = FreeFile Open CStr(Printer.Port) For Binary Access Write As #PCnl '//Calcula el tamaño del archivo numLoops = LOF(1) \ Buffer LeftOver = LOF(1) Mod Buffer '//lo imprime Chunk = Space$(Buffer) For i = 1 To numLoops Get #FCnl, , Chunk Put #PCnl, , Chunk DoEvents If CancelPrinting Then Exit For Next If Not CancelPrinting Then Chunk = Space$(LeftOver) Get #FCnl, , Chunk Put #PCnl, , Chunk End If EndSub: Close #FCnl, #PCnl Screen.MousePointer = vbDefault Exit Sub SubErr: MsgBox Err.Description, vbInformation, "Impresion del archivo..." Resume EndSub End Sub RECOMENDACIONES. Es conveniente colocar un Botón para configurar la Impresora antes de enviar el trabajo (un archivo de impresora debe ejecutarse con el mismo controlador de la impresora que lo creo). Adicionamos un control CommonDialog, y: Private Sub cmdConfig_Click() cdlPrinterSetup.Flags = cdlPDPrintSetup cdlPrinterSetup.ShowPrinter DoEvents End Sub También es conveniente crear la opción de cancelar: Private Sub cmdCancel_Click() CancelPrinting = True End Sub Cristian Rojas cristianrojas@entelchile.net