Sie sind auf Seite 1von 16

Distribución de nóminas por correo electrónico Julio Ríos

Distribución de nóminas usando correo electrónico

Índice de contenido
Problemática.........................................................................................................................................1
Solución................................................................................................................................................1
Que es lo que necesito..........................................................................................................................2
El programa..........................................................................................................................................3
Referencias al software usado..............................................................................................................3
Forma de usar el programa...................................................................................................................3
Limitaciones conocidas........................................................................................................................4
Pruebas de rendimiento........................................................................................................................4
Código del programa............................................................................................................................4
Licenciamiento de los documentos....................................................................................................16

Problemática
Se necesita hacer llegar de manera más eficiente las nóminas de cada uno de los empleados
de una empresa. A ser posible hacerles llegar a la misma vez que se generan las nóminas, para que
esta documentación la tenga cada empleado.
El programa que se usa para generar las nóminas el Nomina Plus de la empresa SAGE.
Es verdad que el procedimiento que usa este programa no es muy operativo y hace que sea
tedioso y difícil de usar. Aunque se tiene soporte por parte del fabricante de la aplicación, éste no
está por la labor de facilitar procedimientos alternativos e integrados con su programa. Así aunque
desde el propio programa ofrece la funcionalidad de envío de esta información por correo
electrónico, este no es ni funcional ni operativo.
De la incapacidad de poder obtener un sistema sencillo y fiable por parte de la empresa
SAGE surge esta aplicación, que consiste en intentar solventar esta limitación y hacer que el
personal de recursos humanos de la empresa sea capaz de distribuir las nóminas en el mismo
momento en que se generen.

Solución
Vamos a intentar maximizar los que hace bien SAGE y lo que podemos hacer sin depender
de su servicio técnico.
Para ello lo primero que instalaremos en el ordenador que tiene instalado Nómina Plus una
impresora virtual que convierte lo que deseamos imprimir por SAGE a documentos PDF.
Hemos utilizado la última versión de PDFCreator.
Con esto podemos generar en un sólo documento PDF las nóminas que seleccionemos y la
generación de este documento es muy rápido.
Al margen de esto hemos creado en el programa de nóminas un nuevo tipo de impreso,
acorde a las necesidades de impresión de una nómina, donde básicamente hemos modificado el que
trae SAGE y lo hemos puesto centrado en una hoja A4. No hemos añadido ningún logo.

Pag. 1 de 16
Distribución de nóminas por correo electrónico Julio Ríos

Desde Nómina Plus somos capaces de hacer un documento PDF con las nóminas de todos
los empleados de manera muy rápida.
Nómina Plus permite trabajar con varias empresas por eso nosotros vamos a generar varias
plantillas (una plantilla por empresa) con su logo, pie de página, lateral y firma del responsable de
recursos humanos.
Estas plantillas han sido confeccionadas con LibreOffice y se han generado al final tantos
documentos PDF con empresas que gestione Nómina Plus.
Como nuestro origen de datos es uno o varios documentos PDF, necesitaremos herramientas
para la manipulación de estos ficheros.
El resultado final del proceso será el envío de un documento PDF a la dirección electrónica
con el contenido de la nómina del mismo.
Para hacer esto usaremos el programa PDFTK, el cual nos permitirá manipular el
documento pdf que contiene todas las nóminas.
Con este programa generaremos tantos ficheros PDF como hojas que tenga el documento
original, asumiendo siempre que una nómina ocupa una y sólo una nómina.
La forma de conseguir esto es ejecutando este comando
pdftk origen.pdf burst output paginaJ_02d%.pdf
Una vez generados los arhivos pdf individualizados necesitaremos saber a quien
corresponde cada uno
Buscar contenido en PDF es complejo pero afortunadamente podemos convertir mediante otra
herramienta el contenido del PDF a formato TXT donde encontrar información es mucho más
sencillo. La herramienta que usaremos es PDFTOTXT
Así con esta herramienta generaremos ficheros TXT
pdftotext fichero.pdf
Generado todo lo necesario buscaremos a quién pertenece cada documento PDF y se lo
enviaremos por correo electrónico usando la herramienta sendemail, pero antes del envío
modificaremos el documento original y le añadiremos los logos de la empresa mediante de nuevo el
programa pdftk
pdftk fichero.pdf background marca.pdf output salida.pdf

Que es lo que necesito


El programa que genera las nóminas (SAGE)
Una impresora virtual (PDFCreator)
Un servidor de correo electrónico y una cuenta de correo válida para poder enviar esta
información
Software para manipular los PDF
pdftk
pdftotext

Pag. 2 de 16
Distribución de nóminas por correo electrónico Julio Ríos

Software para el envío de la información por correo


sendemail

El programa
El programa está escrito en visual basic script para una fácil manipulación y adaptación.
Al principio del código se deben cambiar los parámetros necesarios que son:
Cuenta de correo (usuario, contraseña de la cuenta de envío, servidor de correo)
Ficheros de marca de agua
Ficheros de usuarios donde se debe escribir el DNI del usuario, Nombre del usuario,
dirección de correo del envío, marca de agua para embellecer el documento.
Este fichero de usuario debe ser en formato csv con separador ; entre campos y se puede
usar cualquier editor de texto para crearlo.
La limitación que tiene es que debemos evitar los caracteres especiales en el campo nombre,
tal como las ñ o acentos.

Referencias al software usado


PDFCreator, para generar las nóminas iniciales con el programa de nóminas. Su software se
puede descargar de http://sourceforge.net/projects/pdfcreator/
PDFtk para manipular los PDF generados. Su software se puede descargar de
http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
XPDF, para convertir PDF a teto y buscar los datos en el texto y poder relacionar las
direcciones de correo electrónico con los documentos pdf. Su software se puede descargar de
http://www.foolabs.com/xpdf/download.html
Sendemail, cliente para poder enviar correos electrónicos desde nuestro programa. Su
software se puede descargar de http://caspian.dotconf.net/menu/Software/SendEmail/
Notepad++, editor de texto para generar el programa cd visual basic script. Su software se
puede descargar de http://notepad-plus-plus.org/
Libreoffice, para generar los pdf que se usará como marcas de agua. Su software se puede
descargar de http://www.libreoffice.org/
Gimp, para modificar algún fichero logo en formato transparente. Su software se puede
descargar de http://www.gimp.org/

Forma de usar el programa


La forma más sencilla de usar el programa es generar una carpeta donde tendremos todos los
ficheros de la aplicación, que deben ser:
Los ficheros PDF que sirven como marca de agua, tantos como empresas tenga el programa

Pag. 3 de 16
Distribución de nóminas por correo electrónico Julio Ríos

de nóminas
Los ficheros sendemail.exe y sendemail.txt (que se usan para el envío de los correos), los
ficheros pdftk.exe y pdftotext.exe junto con el fichero libiconv2.dll que se usan para gestionar los
pdf originales y generar las pdf a entregar al usuario.
El fichero usuarios.csv, donde debemos especificar los datos necesarios para el envío de las
nóminas y que debe estar en este formato:
[DNI];[Nombre usuario];[dirección electronica de envío];[marca de agua a usar]
El fichero procesar nóminas.vbs que es el programa en sí
Luego crearemos un acceso directo a este fichero para ejecutar el programa con un simple
doble clic sobre este acceso directo.

Limitaciones conocidas
Los ficheros de marca de agua en formato deben coincidir con el contenido de la variable
MarcasDeAgua del programa. Estos son los únicos ficheros pdf que el programa no procesará.
Los nombres que están definidos en el fichero usuario no deben contener al menos ñ o
acentos porque cuando se generan los ficheros correspondientes el programa de conversión falla
El programa sólo buscará la primera nómina dentro de los documentos PDF. No buscará
más. Esto es así porque SAGE sólo permite imprimir nóminas de un periodo de tiempo
determinado. Así que si ponemos varios PDF de varios periodos determinados el programa sólo
enviará el primero que encuentre y no todos. Así que se debe ejecutar el programa por cada periodo
de tiempo que se genere.
También se asume que cada nómina ocupa una y sólo una página, si esto no fuera así el
programa no haría bien su trabajo y habría que redefinir el mismo.

Pruebas de rendimiento
Se ha ejecutado el programa en la misma máquina que se generan las nóminas y se ha
observado que el envío de 110 nóminas el programa ha tardado apenas 90 segundos.
La rapidez de la aplicación depende de la potencia del ordenador donde se ejecute y la
conexión al servidor de correo, que cuanto más rápida sea menos tardará en enviar esta información
por este método.
El programa al final envía un fichero log por correo electrónico al operador del programa.
Si todo ha ido bien el sistema es “limpio” y borra todo el fichero que genera, es decir al final
de la ejecución deberemos tener en la carpeta de nuestra aplicación los mismos ficheros.
Todos los resultados generados por el programa se deben ver en las diferentes cuantas de
correo electrónico.

Código del programa


Aquí detallaremos nuestro software, poniendo en color los datos que se deben de cambiar
para un correcto uso del mismo

Pag. 4 de 16
Distribución de nóminas por correo electrónico Julio Ríos

' Script para procesar y enviar por correo electrónico las nóminas generadas con sage
' License: GPL (http://es.wikipedia.org/wiki/GNU_General_Public_License)
' Version: 1.0.0.0
' Date: Marzo, 2011
' Author: Julio Ríos (julio punto rios punto 2006 arroba gmail punto com)

' Se necesitan los pdf donde están las nominas (cada pagina es una nomina que hay que enviar a una
persona distinta)
Option Explicit

' Constantes para el envío de las nominas


Const ServidorCorreo = "miservidordecorreo" ' Servidor de correo que envía las nóminas
Const Remitente = "usuarioCorreo@miservidordecorreo" ' Usuario que envía los correos
Const UsuarioRemitente = "usuario" ' Usuario que envía los correos
Const PaswwordRemitente = "contraseña" ' Password del usuario que envía el correo
Const ResponderA = "usuarioCorreoResponderA@miservidordecorreo" ' Campo para que el que
quiera responder responda al usuario
Const Operador = "usuarioCorreo@miservidordecorreo" ' el que quiera gestionar el log que
devuelve la aplicación

Const MarcasDeAgua = "Marca_Agua_1.pdf;Marca_Agua_2.pdf;Marca_Agua_3.pdf" ' Ficheros


para generar los definitivos
Const PrefijoFicherosPDF = "pagina" ' prefijo que vamos a usar para generar las paginas PDF
Const LogFichero = "Log.csv" ' Fichero Log que se crea para depuración
Const FicheroUsuarios = "usuarios.csv" ' Fichero donde se guardan los parámetros de los usuarios
Const ForReading = 1

Dim AsuntoMensaje ' Varaible que contiene parte del asunto que se enviara por correo electrónico

' Escribe un texto dado dentro de un fichero de texto (Anexa el contenido)


Sub EscribirLog(Fichero, Texto)
Const ForAppending = 8 ' Para anexar a un txt el log
Dim objFSO, objTextFile
Set objFSO = CreateObject("Scripting.FileSystemObject")

Pag. 5 de 16
Distribución de nóminas por correo electrónico Julio Ríos

Set objTextFile = objFSO.OpenTextFile (Fichero, ForAppending, True)


objTextFile.WriteLine(Texto)
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
End Sub

' Funcion que borra un fichero dado


Sub BorrarFichero (Fichero)
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(Fichero)
Set objFSO = Nothing
End Sub

' Funcion que envia un correo electronico


Sub EnviarCorreo (Destinatario, Asunto, CuerpoMensaje, FicheroAdjunto)
' Envio deun correo electronico
Dim objShell, Aux
Call EscribirLog(LogFichero, Now & ";" & "Enviando fichero: " & FicheroAdjunto & " a "
& Destinatario & ";" & Now)
Aux = "%comspec% /c sendemail -f " & Remitente & " -xu " & UsuarioRemitente & " -xp "
& PaswwordRemitente & " -s " & ServidorCorreo & " -o reply-to=" & ResponderA
'& " -cc " & Operador
Aux = Aux & " -t " & Destinatario & " -u """ & Asunto & """ -m """ & CuerpoMensaje &
""" -a " & """" & FicheroAdjunto & """" & " >> logcorreo.txt"
'WScript.Echo "envio correo: " & Aux
On Error Resume Next
Set objShell = CreateObject("Wscript.Shell")
objShell.Run Aux, , true
End Sub

' Dado un fichero pdf generamos un fichero PDF añadiendo una marca de agua que hay en otro PDF
' Borramos los residuos generados, doc_data.txt y el fichero original
' El nombre de los ficheros si contienen blancos entre comillas

Pag. 6 de 16
Distribución de nóminas por correo electrónico Julio Ríos

' Nombre sera el nombre nuevo del fichero que se generar


Sub GeneroPDFconMarca(Fichero, Marca, Nombre)
Dim objShell, Aux
Call EscribirLog(LogFichero, Now & ";" & "Generando la marca de agua para el fichero: "
& Fichero & " ;" & Now)

Aux = "%comspec% /c pdftk """ & Fichero & """ background """ & Marca & """ output
""" & Nombre & """"
'WScript.Echo "Ejecuto: " & Aux
On Error Resume Next
Set objShell = CreateObject("Wscript.Shell")
objShell.Run Aux, , true
End Sub

' Funcion de vuelve el nombre del fichero si este contiene la cadena a buscar y sino devuelve vacio
Function EncontrarTXT (Fichero, cadenaTexto)
Dim oFich, objFso
Dim Encontrado ' Variable booleana para hacer el bucle
Dim cadena, Aux

Set objFso = CreateObject("Scripting.FileSystemObject")


Set oFich = objFso.OpenTextFile(Fichero)
Encontrado = False
Aux = ""

While Not oFich.AtEndOfStream And Not Encontrado


cadena = oFich.Readline
If InStr(1, cadena , cadenaTexto, 1) Then
Aux = Fichero
Encontrado = True
End If
Wend

oFich.Close

Pag. 7 de 16
Distribución de nóminas por correo electrónico Julio Ríos

Set oFich = Nothing


Set objFso = Nothing

EncontrarTXT = Aux
End Function

' busca dentro de los TXT que aparezca la cadena de texto y si lo encuentra devuelve el nombre del
fichero y sino ""
Function BuscarenTXT (cadenaTexto)
Dim Aux, Encontrado
Dim objFso, objFiles, fileList
Dim i, ListadeFicheros, ArraylistadeFicheros
Aux = ""
Encontrado = False
If cadenaTexto <> "" Then
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFiles = objFso.GetFolder(".\")
Set fileList = objFiles.Files

ListadeFicheros = "" 'Contendra los txt a buscar


For Each i In fileList
If objFso.GetExtensionName(i.name) = "txt" Then
If ListadeFicheros = "" Then
ListadeFicheros = i.name
Else
ListadeFicheros = ListadeFicheros & ";" & i.name
End If
End If
Next
Set objFso = Nothing
Set objFiles = Nothing
Set objFiles = Nothing
If ListadeFicheros <> "" Then
ArraylistadeFicheros = Split(ListadeFicheros, ";")

Pag. 8 de 16
Distribución de nóminas por correo electrónico Julio Ríos

' ArraylistadeFicheros(i) debe contener los ficheros a buscar


i=0
Encontrado = False
Aux = ""
While i <= UBound(ArraylistadeFicheros) And Not Encontrado
Aux = EncontrarTXT (ArraylistadeFicheros(i), cadenaTexto)
If Aux <> "" Then
Aux = ArraylistadeFicheros(i)
Encontrado = True
End If
i=i+1
Wend
End If
End If
BuscarenTXT = Aux
End Function

' Función que lista el fichero usuarios.csv


' Busca el primer TXT que contenga el DNI
' GeneroPDFconMarca del fichero PDF asociado al TXT con el nombre del Usuario
' Envía por correo electrónico el fichero
' Borra el fichero enviado y los pdf y txt asociado
Sub ProcesoUsuarios (Periodo)
' leemos el fichero de usuarios
' Por cada linea obtenemos los datos
' Buscamos en los txt el datos del DNI
' Periodo es lo que se mete en el programa el personal que ejecuta el programa
Dim objFSO, objTextFile
Dim LineaUsuario, DatosUsuario
Dim DNI, Nombre, correo, marca
Dim NombreFichero, PDFEquivalente, NombrePDF
Dim Aux

Set objFSO = CreateObject("Scripting.FileSystemObject")

Pag. 9 de 16
Distribución de nóminas por correo electrónico Julio Ríos

Set objTextFile = objFSO.OpenTextFile(FicheroUsuarios, ForReading)


NombreFichero = ""
Do Until objTextFile.AtEndOfStream
NombreFichero = ""
LineaUsuario = objTextFile.Readline
DatosUsuario = Split(LineaUsuario, ";")
DNI = DatosUsuario(0)
Nombre = DatosUsuario(1)
correo = DatosUsuario(2)
marca = DatosUsuario(3)
NombreFichero = BuscarenTXT (DNI)
If NombreFichero <> "" Then
' hemos encontrado la nomina del usuario DNI en el fichero txt
NombreFichero
Aux = Left(NombreFichero, Len(NombreFichero)-3)
PDFEquivalente = Aux & "pdf"
NombrePDF = Nombre & ".pdf"
' Añadir marca de agua
Call GeneroPDFconMarca(PDFEquivalente, marca, NombrePDF)
' Enviar el PDF
Call EnviarCorreo (correo, "Nomina (" & Periodo & ")", "Le adjuntamos su
nómina del mes", NombrePDF)
' Borrar txt, pdf asociado y generado
Call BorrarFichero (NombreFichero)
Call BorrarFichero (PDFEquivalente)
Call BorrarFichero (NombrePDF)
End If
Loop
Set objFso = Nothing
Set objTextFile = Nothing
End Sub

' Borramos los ficheros TXT que dice el array y enviamos sus homólogos pdf al operador

Pag. 10 de 16
Distribución de nóminas por correo electrónico Julio Ríos

Sub BorrarmosTXT (Ficheros)


Dim j, ArrayNombreFicheros
Dim PDFEquivalente ' es el fichero pdf que genero el txt
Dim Aux

ArrayNombreFicheros = Split(Ficheros, ";")


PDFEquivalente = ""
' ArrayNombreFicheros(j) es un nombre .txt
For j = LBound(ArrayNombreFicheros) To UBound(ArrayNombreFicheros)
Call EscribirLog(LogFichero, Now & ";" & "Borrando el fichero: " &
ArrayNombreFicheros(j) & " ;" & Now)
Aux = Left(ArrayNombreFicheros(j), Len(ArrayNombreFicheros(j))-3)
PDFEquivalente = Aux & "pdf"
' Borramos el TXT
Call BorrarFichero (ArrayNombreFicheros(j))
Call EscribirLog(LogFichero, Now & ";" & "Enviando el fichero al operador: " &
PDFEquivalente & " ;" & Now)
Call EnviarCorreo (Operador, "Fichero PDF de nómina no enviado a nadie", "El
fichero adjunto en el mensaje no se ha enviado a nadie porque el programa no ha sabido de quien
es. Revisa el fichero de usuarios (Recuerda que el nombre no debe contener ni acentos ni ñ ni
caracteres extraños) y comprueba que el DNI esté dado de alta junto con su correo electrónico.",
PDFEquivalente)
' Borramos el PDF asociado
Call BorrarFichero (PDFEquivalente)
Next
End Sub

'Veo que fichero TXT queda y les envío al operador su PDF asociado y los borro
Sub LimpioBasura
Dim objFso, objFiles, fileList
Dim Aux, FicherosTXT, i

FicherosTXT = ""
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFiles = objFso.GetFolder(".\")
Set fileList = objFiles.Files

Pag. 11 de 16
Distribución de nóminas por correo electrónico Julio Ríos

For Each i In fileList


If objFso.GetExtensionName(i.name) = "txt" Then
Aux = Left(i.name, Len(PrefijoFicherosPDF))
If Aux = PrefijoFicherosPDF Then
' Hay TXT
If FicherosTXT = "" Then
FicherosTXT = i.name
Else
FicherosTXT = FicherosTXT & ";" & i.name
End If
End If
End If
Next
Set objFso = Nothing
Set objFiles = Nothing
Set objFiles = Nothing
' FicherosTXT hay una cadena con los ficheros a borrar
Call BorrarmosTXT (FicherosTXT)
End Sub

' Dado un fichero pdf generamos tantos pdf como paginas tenga el original
' Borramos los residuos generados, doc_data.txt y el fichero original
' Los generamos pdftk Fichero.pdf burst output paginaj_%02d.pdf
' Si contiene blancos el fichero se debe pasar entre comillas dobles
Sub GenerarPaginasIndividuales(Fichero, numero)
Dim objShell, Aux
Dim nombreAux
nombreAux = PrefijoFicherosPDF & numero & "_%02d.pdf"
Call EscribirLog(LogFichero, Now & ";" & "Generando los ficheros individuales: " &
Fichero & " ;" & Now)
Aux = "%comspec% /c pdftk """ & Fichero & """ burst output " & nombreAux
'WScript.Echo "Ejecuto: " & Aux
On Error Resume Next

Pag. 12 de 16
Distribución de nóminas por correo electrónico Julio Ríos

Set objShell = CreateObject("Wscript.Shell")


objShell.Run Aux, , true
Call BorrarFichero (Fichero)
Call BorrarFichero ("doc_data.txt")
End Sub

' Dado un PDF convierto a TXT


Sub GeneraFicheroTXT(Fichero)
Dim objShell, Aux

Call EscribirLog(LogFichero, Now & ";" & "Generando el fichero TXT: " & Fichero & " ;"
& Now)
Aux = "%comspec% /c pdftotext """ & Fichero & """"
'WScript.Echo "Ejecuto: " & Aux
On Error Resume Next
Set objShell = CreateObject("Wscript.Shell")
objShell.Run Aux, , true
End Sub

' Convertimos a txt todos los ficheros pagina*.pdf generados


Sub ConvertirPDFaTXT
Dim objFso, objFiles, fileList
Dim i, Aux

Set objFso = CreateObject("Scripting.FileSystemObject")


Set objFiles = objFso.GetFolder(".\")
Set fileList = objFiles.Files
For Each i In fileList
If objFso.GetExtensionName(i.name) = "pdf" Then
Aux = Left(i.name, Len(PrefijoFicherosPDF))
If Aux = PrefijoFicherosPDF Then
' Convierto TXT
Call GeneraFicheroTXT(i.name)
End If

Pag. 13 de 16
Distribución de nóminas por correo electrónico Julio Ríos

End If
Next
Set objFso = Nothing
Set objFiles = Nothing
Set objFiles = Nothing
End Sub

' Función que lee todos los pdf y genera tantos pdf como páginas tengan estos
' Necesitamos el asunto del mensaje que vamos a enviar
Sub PartirPDF (AsuntoTeclado)
Dim objFso, objFiles, fileList
Dim i, j
Dim NombreFichero
Dim FicherosAProcesar 'Contiene todos los PDF que vamos a procesar
Dim ArrayNombreFicheros 'para partir los nombres de los ficheros que se van a generar en
FicherosAProcesar
j = 0 ' numero de fichero procesados
FicherosAProcesar = ""
' Listamos todos los PDF del directorio
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFiles = objFso.GetFolder(".\")
Set fileList = objFiles.Files
For Each i In fileList
If objFso.GetExtensionName(i.name) = "pdf" Then
' Si el nombre del fichero no es ninguno de MacasdeAgua Se puede Procesar
If InStr(1, MarcasDeAgua , i.name, 1) = 0 Then
If FicherosAProcesar = "" Then
' Primer Fichero
FicherosAProcesar = i.name
Else
FicherosAProcesar = FicherosAProcesar & ";" & i.name
End If
j=j+1
End If

Pag. 14 de 16
Distribución de nóminas por correo electrónico Julio Ríos

End If
Next
'WScript.Echo "Ficheros: " & j & " *** " & FicherosAProcesar
Set objFso = Nothing
Set objFiles = Nothing
Set objFiles = Nothing
' Procesamos los Ficheros
If FicherosAProcesar = "" Then
Call EscribirLog(LogFichero, Now & ";" & "No hay PDF que procesar." & ";" &
Now)
Else
' Generamos los PDF por paginas
' FicherosAProcesar contiene los nombres de los archivos pdf que vamos a procesar
delimitados por ;
ArrayNombreFicheros = Split(FicherosAProcesar, ";")
For j = LBound(ArrayNombreFicheros) To UBound(ArrayNombreFicheros)
Call EscribirLog(LogFichero, Now & ";" & "Procesando el fichero: " &
ArrayNombreFicheros(j) & " ;" & Now)
' Debemos generar tanto pdf como paginas tenga
Call GenerarPaginasIndividuales(ArrayNombreFicheros(j), j)
Next
' Se han generado muchos ficheros pdf (pagina*.pdf)
Call ConvertirPDFaTXT
' Se ha generado muchos fichero txt del estilo pagina.txt
' Ahora tengo pdf y txt y un fichero de usuarios
Call ProcesoUsuarios(AsuntoTeclado)
Call LimpioBasura
End If
End Sub

' inicio de la aplicación


Call EscribirLog(LogFichero, Now & ";" & "La aplicación se inicia a las ;" & Now)
' Partimos los PDF (generamos tantos pdf como páginas tengan
AsuntoMensaje = InputBox("Introduce el período de la nóminas", "Marzo 2011")
Call PartirPDF(AsuntoMensaje)

Pag. 15 de 16
Distribución de nóminas por correo electrónico Julio Ríos

' Envío al operador del log


Call EnviarCorreo (Operador, "Envío del log de la aplicación del envío de las nóminas", "El
programa de envío de las nóminas ha finalizado. Se adjunta un log con lo producido", LogFichero)
' Fin de la apliacación
Call EscribirLog(LogFichero, Now & ";" & "La aplicación finaliza a las ;" & Now) 'Este no queda
enviado al usuario
Call BorrarFichero (LogFichero)
Call BorrarFichero ("logcorreo.txt") ' Borramos el log que genera el correo electrónico

Licenciamiento de los documentos


Este documentos está sujeto a una licencia CopyLeft y el programa está sujeto a una licencia
GPL
Los enlaces a estas dos licencias se pueden encontrar en los siguientes enlaces
http://www.gnu.org/copyleft/gpl.html
http://es.wikipedia.org/wiki/Copyleft
Esta licencia permite la libre distribución de copias y versiones modificadas de una obra u
otro trabajo, exigiendo que los mismos derechos sean preservados en las versiones modificadas
respetando la autoría del mismo.

Pag. 16 de 16

Das könnte Ihnen auch gefallen