Email nascosta



  • Email nascosta
    di XeNo (utente non iscritto) data: 27/12/2014 04:01:44

    Buongiorno a tutti, una domanda x i più esperti

    Esiste la possibilità di inviare in modo "nascosto" una mail con in allegato il file che si è appena modificato e salvato?

    Magari tramite macro, ma il tutto deve rimanere nascosto e non rintracciabile.

    Ogni volta che il file Pippo.xls viene aperto, modificato e salvato, parte una mail con il file stesso a pincopallino@gmail.it

    È possibile??



  • di XeNo (utente non iscritto) data: 28/12/2014 07:58:01

    Nessuno è in grado di aiutarmi o consigliarmi?



  • di XeNo (utente non iscritto) data: 28/12/2014 17:19:08

    Ragazzi, almeno ditemi se è una cosa fattibile...



  • di scossa data: 28/12/2014 20:22:54

    Se io fossi l'utilizzatore del tuo file e scoprissi questa feature, invierei a quell'indirizzo email una collezione dei peggiori virus e mailware in circolazione!



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di XeNo (utente non iscritto) data: 29/12/2014 00:31:01

    Mi serve in quanto ho il sospetto che gente che non è autorizzata mette mani in file che non dovrebbe nemmeno aprire per giunta li modifica...

    A prescindere da quello.... È fattibile??



  • di lepat (utente non iscritto) data: 29/12/2014 07:49:07

    non credo sia fattibile il "non accorgersene", mi sembra più semplice proteggere il file con una password



  • di Zer0Kelvin data: 29/12/2014 11:57:21

    Ciao.
    Se il problema è quello di tenere traccia degli accessi al file, si può risolvere diversamente, a patto che ogni utente acceda al PC con il proprio Username Windows.
    Si dovrebbe creare un file di log in una directory nascosta di tua conoscenza, e fare in modo che all'apertura del file venga registrato il nome dell'utente e l'ora di accesso al file.
    Si potrebbe anche, tramite Workbook_Sheetchange, determinare quali utenti modificano il file.
    La soluzione più semplice e lineare resta comunque quella proposta da Lepat: proteggere il file con password e fornire la password alle sole persone autorizzate.



  • di XeNo (utente non iscritto) data: 29/12/2014 14:11:18

    Il problema è che questo file x esigenze deve rimanere di libero accesso a tutti.... Ma solo determinate persone hanno diritto di modificarlo e si è riscintrato che gente non autorizzata lo ha modificato. Si voleva capire chi fosse prima di procedere ai blocchi con psw...



  • di Zer0Kelvin (utente non iscritto) data: 29/12/2014 18:30:34

    In tal caso penso che la soluzione più pratica sia quella di creare un file di log.
    Ho già qualcosa di pronto adattabile a questo scopo; allego un file di esempio appena posso.



  • di XeNo (utente non iscritto) data: 29/12/2014 19:03:48

    Grazie del tempo che mi stai dedicando.

    Tranquillo non ho nessuna fretta



  • di Zer0Kelvin data: 01/01/2015 18:49:45

    Salve a tutti.
    Allego un file che contiene una semplice procedura per la creazione di un file di log.
    Si tratta di un semplice file di testo che viene creato in una sottodirectory nascosta nella directory che contiene il file excel; il nome della directory nascosta è .LG.
    Per poter visualizzare la cartella e leggere il file è necessario abilitare la visualizzazione di cartelle e files nascosti da Windows:
    -Pannello di controllo
    -Opzioni cartella
    -Visualizzazione
    -Selezionare: Visualizza cartelle, file e unità nascoste.
    All'apertura del file (evento Workbook_Open), se il file non esiste verrà creato, e verrà scritta nel file la data e ora di accesso al file, nonchè il nome dell'utente corrente.
    Se il file viene modificato e successivamente salvato, verrà registrata l'ora e l'utente che ha effettuato il salvataggio.
    Per far funzionare il tutto in un altro file, è necessario copiare il contenuto di Modulo1 e del modulo di codice di Questa_cartella_di_lavoro.
    Alla fine di Modulo1 vi sono due semplici procedure che servono ad attivare o disattivare il log (AttivaLog() e DisattivaLog() ).
     
    'Questo è il contenuto del modulo di codice di Questa_cartella_di_lavoro
    ========================================================
    Option Explicit
    
    Private SheetsChanged As Boolean
    
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If SheetsChanged Then
            If cGet("cRegisterAccessLog") Then
                WriteToLog (vbTab & "Salvataggio dopo modifica: " & Now & vbCrLf & vbTab & "Utente: " & WinUser)
            End If
        End If
    End Sub
    
    Private Sub Workbook_Open()
        SheetsChanged = False
        If cGet("cRegisterAccessLog") Then
            WriteToLog ("Accesso al file " & ThisWorkbook.Name & vbTab & Now & vbCrLf & vbTab & "Utente: " & WinUser)
        End If
    End Sub
    
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        SheetsChanged = True
    End Sub
    ========================================================
    
    'Questo è il contenuto di Modulo1
    ========================================================
    Option Explicit
        
    Public Declare Function GetUserName Lib "advapi32.dll" _
            Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    
    Public Const fLogPath = ".LG"
    
    Public Sub cSet(Value As Variant, NM As String, Optional WBook As Workbook = Nothing, Optional Visibile As Boolean = True, Optional Salva As Boolean = True)
        If WBook Is Nothing Then Set WBook = ThisWorkbook
        With WBook.Names
            On Error Resume Next
            .Item(NM).Delete
            On Error GoTo 0
            .Add Name:=NM, RefersTo:=Value, Visible:=Visibile
        End With
        If Salva Then WBook.Save
    End Sub
    
    Public Function cGet(NM As String, Optional WBook As Workbook = Nothing) As Variant
        cGet = ""
        If WBook Is Nothing Then Set WBook = ThisWorkbook
        On Error Resume Next
        cGet = Evaluate(WBook.Names(NM).Value)
        On Error GoTo 0
    End Function
    
    Public Function WinUser() As String
    Dim s As String * 255
    Dim lLen As Long
    Dim sString As String
        sString = ""
        On Error Resume Next
        lLen = GetUserName(s, 255)
        lLen = InStr(1, s, Chr(0))
        
        If lLen > 0 Then
            sString = Left(s, lLen - 1)
        Else
            sString = s
        End If
        On Error GoTo 0
        WinUser = Trim(sString)
    End Function
    
    Public Sub WriteToLog(Line As String)
    Dim LOGpath As String
        LOGpath = ThisWorkbook.Path & "" & fLogPath
        If Dir(LOGpath, vbDirectory + vbHidden) = "" Then
            MkDir LOGpath
            SetAttr LOGpath, vbHidden
        End If
        LOGpath = LOGpath & "" & ThisWorkbook.Name & ".Log"
        If Dir(LOGpath, vbHidden + vbReadOnly + vbSystem) <> "" Then SetAttr LOGpath, vbNormal
        Open LOGpath For Append As #1
        Write #1, Line
        Close #1
        SetAttr LOGpath, vbHidden + vbReadOnly + vbSystem
    End Sub
    
    Public Sub LogEnable(Abilita As Boolean)
        cSet Abilita, "cRegisterAccessLog", ThisWorkbook, False, True
    End Sub
    
    Public Sub AttivaLog()
        LogEnable True
    End Sub
    
    Public Sub DisattivaLog()
        LogEnable False
    End Sub
    



  • di XeNo (utente non iscritto) data: 02/01/2015 10:31:08

    Fantastico......


    Mille grazie davvero!!!!!!!!