+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Errore apertura file xls inviato via e-mail con vba

  1. #1
    Gioventus non è in linea Novello
    Post
    13

    Salve a Tutti!

    Salve, sono onorato di essere un nuovo utente del forum.


  2. #2
    L'avatar di almorel
    almorel non è in linea Scribacchino
    Post
    594
    Benvenuto, SALI !
    Ciao
    Alberto

  3. #3
    Gioventus non è in linea Novello
    Post
    13

    Errore apertura file xls inviato via e-mail con vba

    Salve, ho un problema riguardo l'apertura di un allegato in formato xls inviato via e-mail con VBA.


    RIPORTO DI SEGUITO IL CODICE:

    codice:
    ================================================
    ' AGGIUNGO UN FOGLIO EXCEL
     
    Excel.Application.Workbooks.Add
     
    With Excel.Application.Sheets(1)
    
       .Select
    
       .Cells(1, 1) = "PROVA"
    
    End With
    
    ' TROVO LA DIRECTORY TEMPORANEA DELL'UTENTE (UTILIZZO LIBRERIA)
    
    TempFile = ""
    TempDir = Space$(Max_Path)
    SLength = GetTempPath(Max_Path, TempDir)
    
    If SLength > 0 Then
      TempDir_F = Left$(TempDir, SLength)
          
       TempFile = TempDir_F & "PROVA.xls"
    End If
     
    ' SALVO IL FILE
    Excel.Application.ActiveWorkbook.SaveAs TempFile
           
    ' CHIUDO IL FILE
    Excel.Application.ActiveWindow.Close
    
    ' INVIO MAIL UTILIZZANDO IL RIFERIMENTO "Microsoft CDO for Windows 2000 Library"
    
    'Dim CDO as CDO.Message
    'Dim CDOc as CDO.Configuration
     
    '   CONFIGURAZIONI SERVER SMTP
           schema = "http://schemas.microsoft.com/cdo/configuration/"
           With CDOc
    
              .Fields.Item(schema & "sendusing") = 2
       
             .Fields.Item(schema & "smtpserverport") = 25
       
             .Fields.Item(schema & "smtpserver") =    
    smtp.live.com
     
             .Fields.Item(schema & "smtpauthenticate") = 1
       
             .Fields.Item(schema & "smtpusessl") = 1
       
             .Fields.Item(schema & "sendusername") = gioventus@hotmail.it
       
             .Fields.Item(schema & "sendpassword") = miapassword
    
             .Fields(schema & "smtpconnectiontimeout") = 60
       
             .Fields.Update
     
          End With
    
    '   INVIO MAIL
     
          With CDO
             
             Set .Configuration = CDOc
             
                .From = gioventus@hotmail.it
                .To = "gioventus@hotmail.it"
                .Subject = "PROVA GIO"
                .Attachments.DeleteAll
                .AddAttachment (TempFile)
                .Send
            
          End With
     
    ================================================
    Quando vado ad aprire l'allegato xls Excel mi da questo errore:

    Impossibile accedere a PROVA[1].xls. Il file potrebbe essere di sola lettura, si sta tentando di accedere a una posizione di sola lettura o il server sul quale il documento è memorizzato non risponde.


    Qualcuno mi potrebbe aiutare? C'è qualcosa di sbagliato nel codice?


    Grazie in anticipo .
    Ultima modifica di dragone bianco; 11-02-2010 00:38 

  4. #4
    Gioventus non è in linea Novello
    Post
    13
    Ciao, grazie del benvenuto!

    Ho un problema: http://forum.masterdrive.it/ms-offic...11/#post185108.

    Sapresti aiutarmi?


    [EDIT: Messagi uniti]
    Ultima modifica di yronium; 10-02-2010 18:07 

  5. #5
    L'avatar di almorel
    almorel non è in linea Scribacchino
    Post
    594
    Mi spiace, lavoro con Access e la mia conoscenza diExcel è molto molto modesta.
    Ciao
    Alberto

  6. #6
    Gioventus non è in linea Novello
    Post
    13
    Grazie lo stesso della disponibilità.

    Se tu avessi bisogno di qualche cosa non esiterò ad aiutarti sempre se potessi.

    Ciao!

  7. #7
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,617
    Ciao

    Verifica il codice in tranche
    prima verifica la parte di codice che crea il file
    e verifica che il file riesci ad aprirlo (così determini quale parte di codice rende il file illeggibile, la parte che lo crea o quando lo invii per email)

    Ciao
    Ultima modifica di dragone bianco; 11-02-2010 14:09 

  8. #8
    Gioventus non è in linea Novello
    Post
    13
    Grazie,
    adesso provo a fare come hai detto, poi ti aggiorno.

  9. #9
    Gioventus non è in linea Novello
    Post
    13
    Ho provato il codice a "strati" come hai suggerito.

    Con la parte di codice che riporto qui sotto il file Excel è leggibile, riesco ad aprirlo (l'unica cosa anomala è che in Task Manager, dopo l'esecuzione del programama, mi rimane appeso il processo EXCEL.EXE).


    codice:
     
    ' AGGIUNGO UN FOGLIO EXCEL  
    Excel.Application.Workbooks.Add
     
    With Excel.Application.Sheets(1)
       .Select
       .Cells(1, 1) = "PROVA"
    End With
    
    TempFile = "C:\prova.xls"
     
    ' SALVO IL FILE
    Excel.Application.ActiveWorkbook.SaveAs TempFile
           
    ' CHIUDO IL FILE
    Excel.Application.ActiveWindow.Close

    Il problema sembrerebbe nella parte di codice dell'invio mail.


    codice:
    '   CONFIGURAZIONI SERVER SMTP
    schema = "http://schemas.microsoft.com/cdo/configuration/"
           
           
    With CDOc
    '   PORTA CDO
       .Fields.Item(schema & "sendusing") = 2
       
    '   PORTA SMTP (VARIA A SECONDA DEL SERVER SMTP)
       .Fields.Item(schema & "smtpserverport") = "smtp.live.com"   
    
    '   SERVER SMTP IN USCITA
       .Fields.Item(schema & "smtpserver") = 25   
    '   SESSIONE AUTENTICATA
       .Fields.Item(schema & "smtpauthenticate") = 1
       
    '   SSL
       .Fields.Item(schema & "smtpusessl") = 1
       
    '   UTENTE
       .Fields.Item(schema & "sendusername") = gioventus@hotmail.it   
    
    '   PASSWORD
       .Fields.Item(schema & "sendpassword") = miapassword   
    
    '   TIMEOUT
       .Fields(schema & "smtpconnectiontimeout") = 60
       
       .Fields.Update
    End With
       
    '   INVIO MAIL
    With CDO
             
       Set .Configuration = CDOc
             
       .From = "gioventus@hotmail.it"
       .To = "gioventus@hotmail.it"
       .Subject = "PROVA GIO"
       .Attachments.DeleteAll
       .AddAttachment (TempFile)
       .Send
             
    End With
                                                                 
    Set CDOc = Nothing
    Set CDO = Nothing

    La mail arriva correttamente ma l'allegato excel non è apribile: eppure fino a non molto tempo fa non avevo avuto questo problema, riuscivo tranquillamente ad aprire i file xls inviati tramite VBA.
    Non so, per assurdo non è che sia Excel il problema?

    Se apro il file dove è stato salvato lo visualizza correttamente.
    Ultima modifica di Gioventus; 11-02-2010 12:51 

  10. #10
    Gioventus non è in linea Novello
    Post
    13
    Ho risolto l'anomalia.

    Nell'invio mail ho aggiunto anche il TextBody e così funziona.

    Non chiedermi perchè non funzionava senza TextBody.


    Grazie comunque, esaminando il codice a parti sono riuscito a risalire al problema (a me ancora incomprensibile).

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi