Option Compare Database
Option Explicit
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" _
(ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" _
(ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As DOCINFO) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Public Sub ImprimirEtiqueta(ByVal strImpresora As String, ByVal strCodigoBarras As String)
Dim hPrinter As Long
Dim docInfo As DOCINFO
Dim lngWritten As Long
Dim strTexto As String
' Abrir la impresora
If OpenPrinter(strImpresora, hPrinter, 0) <> 0 Then
' Inicializar la estructura DOCINFO
docInfo.pDocName = "Etiqueta"
docInfo.pOutputFile = vbNullString
docInfo.pDatatype = "RAW"
' Iniciar el documento
StartDocPrinter hPrinter, 1, docInfo
' Iniciar la página
StartPagePrinter hPrinter
' Imprimir el código de barras
strTexto = Chr(27) & "A" & Chr(2) & Chr(27) & "H" & Chr(100) & _
Chr(27) & "F" & Chr(0) & strCodigoBarras & vbCrLf
WritePrinter hPrinter, ByVal strTexto, Len(strTexto), lngWritten
' Finalizar la página
EndPagePrinter hPrinter
' Finalizar el documento
EndDocPrinter hPrinter
' Cerrar la impresora
ClosePrinter hPrinter
End If
End Sub