Bucle imprimir pdfs en bloque

Necesito crear un bucle para hacer una impresión en pdf de unas facturas, el número del documento está compuesto de un prefijo más el número correspondiente y la carpeta donde voy a guardar los pdfs la busco con una instrucción que permite seleccionar donde deseo guardar la información; la idea es darle un número inicial (incluido prefijo), y un número final, y que en el proceso se imprima uno a uno cada pdf; la instrucción es la siguiente:

Sub ImprimeBloqueFact()

Dim ruta As String

prefac = InputBox("Ingrese el PREFIJO del documento")

nrofac = InputBox("Ingrese el NUMERO INICIAL del documento a imprimir")

finfac = InputBox("Ingrese el NUMERO FINAL del documento a imprimir")

dato1 = prefac & nrofac

dato2 = prefac & finfac

 dato = prefac & nrofac

 Set nv = CreateObject("shell.application")

    carpeta = nv.browseforfolder(0, "Selecciona la carpeta donde se guardará documento", 0, wpath).items.Item.Path

    If carpeta = "" Then

        MsgBox "No has seleccionado ninguna carpeta", , "RUTA"

    Else

        MsgBox "Haz seleccionado la carpeta: " & carpeta

        ruta = carpeta + "\"

    End If

For I = dato1 To dato2

‘INSTRUCCIONES….

dato = prefac & nrofac + 1

Next I

End Sub

El problema es que al intentar correr el proceso, la macro se detiene en la siguiente instrucción:

For I = dato1 To dato2

Realmente no encuentro la manera de solucionar el proceso.

3 Respuestas

Respuesta
1

Es que no has definido la variable I

Tendrías que poner algo como

dim i as integer

for i=dato1 to dato2

Lo que no sé es si dato1 y dato2 son números o es texto. Por ejemplo, si Dato1 es 0012345 sería texto, por lo que tendrías que poner algo como

for i=val(dato1) to val(dato2)

Respuesta
2

Necesitaría definir i dependiendo si está activada la definición Explicita en True. Observo que en dato1 y dato2 son texto y si el prefijo inicia con letras algo como val("AD1258") retornaría el valor 0, excepto que se val("0012345") retorna 12345. Por ejemplo si el prefijo es ADX t en número inicia en 12555, el valor en dato1 sería val(Right("ADX12555", 5)), es decir 12555, igualmente para dato2. Esto es una idea todo depende de la longitud del prefijo y la numeración.

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas