Hola, he empezado hace una semana con esto del visual basic y poco poco he conseguido hacer una aplicación muy sencillita que pide una referencia, una cantidad y un numero de pedido y a través de ellos genera un código de barras.
Mi problema es a la hora de imprimir, ya que, después de generar un archivo prn lo mando a imprimir con una llamada a la orden print del shell, pero si por ejemplo lo pruebo en mi equipo que no tiene impresora y no imprime, cuando le doy otra vez al botón imprimir da un error porque el fichero está en uso (pero por lo menos que controlara el estado del fichero y dijero "Fichero Imprimiendose" o algo así). Además tendría que poner un textbox para introducir el número de etiquetas a imprimir e imprimir luego ese número de etiquetas y por más que he mirado no sé como hacerlo, si con un buble o como.
Os pego el código a ver si me podeis echar una mano.
Muchas gracias por vuestro tiempo.
Un saludo.
Private Sub Imprimir_Click()
Dim xref, xcan1, xcan2, xped, xtot As String
ref = datosref 'Coge los datos de los textbox
ped = datosped
can = datoscan1
xref = Left$(ref + " ", 15)
If IsNull(ped) Or ped = " " Then
ped = "0"
End If
xped = Left$(ped + " ", 10)
xcan1 = Format(can * 10, "0000000000")
xcan2 = Format(can, "#########.0")
xtot = xref + xcan1 + xped ' Concatenación de cadena referencia+cantidad+pedido
Dim fichero As Variant
fichero = "c:codbaretiqueta.prn" ' Envia a un fichero secuencial al disco
Open fichero For Output As #1
Print #1, "N"
Print #1, "B18,55,0,1,2,2,71,B," + Chr$(34) + xtot + Chr$(34)
Print #1, "A294,183,0,4,1,1,N," + Chr$(34) + "REFERENCIA.:" + Chr$(34)
Print #1, "A294,317,0,4,1,1,N," + Chr$(34) + "CANTIDAD:" + Chr$(34)
Print #1, "A272,471,0,4,1,1,N," + Chr$(34) + "NUMERO PEDIDO:" + Chr$(34)
Print #1, "A39,219,0,4,3,4,N," + Chr$(34) + ref + Chr$(34)
Print #1, "A177,355,0,4,3,4,N," + Chr$(34) + xcan2 + Chr$(34)
Print #1, "A207,510,0,4,2,2,N," + Chr$(34) + ped + Chr$(34)
Print #1, "P1"
Close #1
Call Shell("print c:codbaretiqueta.prn", vbHide) ' imprime el fichero creado en ascii
' limpia los controles de pantalla y se posiciona en la referencia
datosref = " "
datoscan1 = 0
datosped = " "
datosref.SetFocus
End Sub