Insertar fichero log en carpeta compartida

Tengo un fichero excel que envía un correo lotus en unas fechas concretas y genera un fichero log en una unidad de mi pc e impide se vuelva a mandar el correo si ya existe el fichero log.
Este fichero se envía a varias personas con unidades de red diferentes (D, E, F )
Necesito que ese fichero log lo grabe en una carpeta de una unidad compartida en red en un servidor, para que solo me llegue un mensaje y no el de todos
Te remito parte del archivo, pero si necesitas te lo envíe todo indicame como puedo hacer llegarte el fichero
Const carpetaFicheroLog = "Dir: \\28nbrv25\tf045599\envios correos lotus\"
'Const carpetaFicheroLog = "*:\\28nbrv25\tf045599\envios correos lotus\"
'Const carpetaFicheroLog = "D:\envios correos lotus\" ''Funciona''
'Const carpetaFicheroLog = "Z:\envios correos lotus\" ''Funciona''
Function insertaRegistroLogCorreo(ByVal fecha As Date, ByVal destinatarios As String) As Boolean
    ''La estructura del fichero log será:''
    ''- Fecha del correo''
    ''- Fecha del sistema''
    ''- Nombre del PC''
    ''- Usuario que envía el correo''
    ''- Destinatarios''
    Dim nf As Integer
    Dim nomFich As String
    Dim lineas As String
    insertaRegistroLogCorreo = False ''Hasta que se consiga grabar el log''
    If Not existeCarpeta(carpetaFicheroLog) Then
        ''No existe la carpeta de destino. Intentamos crearla''
        On Error Resume Next
        MkDir carpetaFicheroLog
        On Error GoTo 0
        If Not existeCarpeta(carpetaFicheroLog) Then
           ''Ni existe ni la podemos crear. Mensaje y adios''
            MsgBox "ERROR: No se puede crear la carpeta destino del " & _
                   "LOG '" & carpetaFicheroLog & "'." & vbCrLf & vbCrLf & _
                   "Proceso cancelado"
            Exit Function
        End If
    End If
Un saludo y Gracias

1 Respuesta

Respuesta
1
Aunque tengo el usuario bloqueado porque de momento no puedo dedicar mucho tiempo a esto... vuelvo con una dedicación 'media'.
Creo entender que el problema está en que los usuarios, que envían correos, no pueden ver la carpeta "envíos correos lotus" que está en tu ordenador y que se llama \\28nbrv25\tf045599.
Y sin embargo, si conectas el ordenador asignándole un nombre de disco, entonces sí te funciona.
¿Es eso?
Porque de ser así podrías verificar si tienen conectado ese disco y conectarlo en caso que no estuviera.
De esa forma sabrías siempre que está conectado y se acabaría el problema.
Dime si es eso y te envío el código para verificar los discos y conectarlos.
Muchas gracias por tu pronta respuesta.
No es una carpeta de mi ordenador, es una carpeta de un servidor, al que en teoría todos tienen acceso.
Es un fichero que me manda un correo en una fecha determinada (al abrirlo) recordándome que hay que actualizarlo ( ¿Se podría hacer para que envíe el correo aunque no se habrá?)
Si pongo para que el fichero log, lo genere en el disco D: del usuario, funciona perfectamente, el problema es que me llega un correo por cada usuario que lo abre el día de la actualización, por lo que necesito que el fichero lo genere en dicho servidor y así solo me llegue el correo del primero que lo habrá
Un saludo y gracias
A ver, ¿el disco "D" es un disco local del ordenador o es un enlace al servidor?
Supongo que habrás probado a grabar cualquier cosa en el servidor. Si no haz una simple prueba:
sub grabarEnServidor()
   dim nf as integer
   nf=freefile
   open "\\28nbrv25\tf045599\envios correos lotus\ficheroDePrueba.txt" for output as nf
   Print #nf, "Linea de prueba"
    Close nf
end sub
Si tienes acceso al servidor, deberá crearte el fichero "ficheroDePrueba.txt", sino... verás cual es el error.
Haz la prueba y me comentas.
Si la carpeta de destino esta creada, añade perfectamente el fichero en el servidor, pero si no esta creada da error 76 de ejecución no se ha encontrado la ruta, de todas formas este es un mal menor ya que la carpeta va a estar creada y en la macro que yo tengo si no esta la crea,
Indicame que tengo que modificar en mi macro para que funcione en el servidor, hasta ahora si yo quería que escribiese en un sitio o en otro lo cambiaba en la macro en la parte que indica
'Const carpetaFicheroLog = "*:\\28nbrv25\tf045599\envios correos lotus\"\\Tewin091\I1004
'Const carpetaFicheroLog = "D:\envios correos lotus\" ''Funciona''
'Const carpetaFicheroLog = "Z:\envios correos lotus\" ''Funciona''
Function insertaRegistroLogCorreo(ByVal fecha As Date, ByVal destinatarios As String) As Boolean
     segun yo queria le quitaba la comilla ' que hay delante del Const carpetaFicheroLog =
Si necesitas todo el fichero indicame donde enviarlo, recuerda que es para que funcione con lotus
En principio la constante debería ser:
    Const carpetaFicheroLog = "\\28nbrv25\tf045599\envios correos lotus\"
Lo mismo que tienes puesto pero sin "*:"
Para crear un directorio que no existe puedes usar:
    mkDir carpetaFicheroLog & "nombre de la carpeta"
Ahora bien, si la carpeta ya existe eso te dará un error. Para evitarlo ponemos:
    On Error Resume Next ' Desactiva los errores de VB
    mkDir carpetaFicheroLog & "nombre de la carpeta"
    On Error Goto 0 ' Vuelve a activar los errores de VB
Esto es independiente de que se use con Lotus o con lo que sea. Se trata de un tratamiento de ficheros y es independiente del correo.
Si me sirviera de algo te diría que mandases por correo el fichero, pero como no tengo acceso al servidor tuyo... todas las pruebas serían erróneas.
Prueba a ver si con eso te sirve.
En tu respuesta indicas:
En principio la constante debería ser:
    Const carpetaFicheroLog = "\\28nbrv25\tf045599\envios correos lotus\"
Lo mismo que tienes puesto pero sin "*:"
ya lo he intentado y no funciona el "*:" lo he puesto en una de las muchas pruebas que he hecho
el fichero que tiene que cargar es un log, no un txt
la primera macro que me mandaste si escribe en el servidor, hay que ver que genere un log tal y como se indica en las macros de hay que es por lo que te indico de mandarte el fichero completo, porque aunque no lo puedas ver puedes ver el resto de macros en su totalidad
Un saludo y gracias
Si quieres mandame la macro, miraré a ver qué diferencias tiene con lo que estás poniendo ahora.
Indicame dónde está grabando en el servidor porque a veces está clarísimo y en otras cuesta más trabajo encontrarlo.
El hecho de ser un fichero ".log" o ".txt" da lo mismo para lo que tratas de hacer. No buscas abrirlo con un programa determinado sino abrirlo y escribirlo desde tu proceso.
Por favor mandame un correo a [email protected] indicándome a que dirección te remito el fichero
Gracias
mándalo a [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas