VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

di il
12 risposte

VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

Buongiorno,

ho il seguente codice che mi ritorna VB 6 Errore di Run-Time 91 - Variabile oggetto o variabile del blocco Wtih non definita alla riga [Set DeletedItemsFolder = oNS.GetDefaultFolder(olFolderDeletedItems)
DefLng A-Z
Option Explicit

Sub Main()

Dim oApp As Outlook.Application
Dim oNS As Outlook.NameSpace

   Dim MyItem As Outlook.MailItem
   Dim WorkItem As Outlook.MailItem
   Dim DeletedItemsFolder As Outlook.MAPIFolder
   Dim TempFolder As Outlook.Folder
   Dim i As Long
   
   Set DeletedItemsFolder = oNS.GetDefaultFolder(olFolderDeletedItems)

   '-- delete the temporary folder
   For i = 1 To DeletedItemsFolder.Folders.Count
      If DeletedItemsFolder.Folders(i).Name = "" Then
         DeletedItemsFolder.Folders(i).Delete
         Exit For
      End If
   Next i

End Sub
qualcuno sa aiutarmi? Grazie

Marzio

12 Risposte

  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Devi creare l'oggetto oNS prima di usarlo ...

    Set oNS = oApp.GetNamespace("MAPI")
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Grazie per la risposta,

    se aggiungo la riga indicata (Set oNS = oApp.GetNamespace("MAPI")) ora l'errore lo ritorna su questa riga.

    Marzio
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    In effetti mi sono accorto che prima manca anche la

    Set oApp = New Outlook.Application()
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Molte grazie, ora è OK

    Marzio
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Prego
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    oregon ha scritto:


    In effetti mi sono accorto che prima manca anche la

    Set oApp = New Outlook.Application()
    Scusa se ne approfitto, non è che sai spiegarmi perché questo codice funziona con Outlook 2003/2007/2010 e non con Outlook 2013?

    Grazie Marzio
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    marziomorandi ha scritto:


    Molte grazie, ora è OK
    OK ma... dipende.
    Se distribuisci la tua applicazione (come penso) funzionerà sul tuo pc, ma non su altri PC che hanno una versione di Office diversa dalla tua.

    Ti suggerisco di leggere il mio l'articolo sull'Office Automation in VB6 che vedi nella mia firma (con tanto di progetti a corredo).
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Leggerò sicuramente il tuo articolo.
    Il codice che mi hai corretto era un esempio, in realtà la mia è una DLL che fa l'integrazione di Outlook con un altro applicativo.
    La parte di codice esaminata è la parte del codice della DLL che da errore con Outlook 2013 mentre funziona correttamente con le versioni di Outlook precedenti alla 2013, non ho trovato nessuna informazione per cui non dovrebbe funzionare con 2013.
    Il problema sembra sia [olFolderDeletedItems] se lo sostituisco ad esempio con olFolderContacts è tutto OK.
    Oltre al fatto che l'applicazione di uno stesso cliente può avere client con versioni di Outlook diverse, è che proprio non so come far funzionare la DLL con Outlook 2013.

    Grazie di nuovo
    Ciao Marzio
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    marziomorandi ha scritto:


    Oltre al fatto che l'applicazione di uno stesso cliente può avere client con versioni di Outlook diverse, è che proprio non so come far funzionare la DLL con Outlook 2013.
    La soluzione è indicata proprio nell'articolo:
    usare il Late-Binding, mentre tu stai usando l'Early-Binding.
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Ho fatto come indicato nell'articolo il codice è il seguente
    DefLng A-Z
    Option Explicit
    Public Const olMailItem = 0
    Public Const olAppointmentItem = 1
    Public Const olContactItem = 2
    Public Const olTaskItem = 3
    Public Const olJournalItem = 4
    Public Const olNoteItem = 5
    Public Const olPostItem = 6
    Public Const olDistributionListItem = 7
    Public Const olFolderDeletedItems = 3
    Public Const olFolderOutbox = 4
    Public Const olFolderSentMail = 5
    Public Const olFolderInbox = 6
    Public Const olFolderCalendar = 9
    Public Const olFolderContacts = 10
    Public Const olFolderJournal = 11
    Public Const olFolderNotes = 12
    Public Const olFolderTasks = 13
    Public Const olFolderDrafts = 16
    
    Sub Main()
    
    Dim DeletedItemsFolder As Outlook.MAPIFolder
     #If EarlyBinding = 1 Then
         Dim oApp As Outlook.Application
         Dim oNS As Outlook.NameSpace
     #Else
         Dim oApp         As Object 'Outlook.Application
         Dim oNS     As Object 'Outlook.NameSpace
     #End If
     
     If App.LogMode = 1 Then ' sta eseguendo l'EXE (compilato)
             Set oApp = CreateObject("Outlook.Application")
         Else ' sta eseguendo il progetto nell'IDE
             Set oApp = Outlook.Application
         End If
    
         ' se sul computer non esiste Outlook avvio la chiusura del form
         If oApp Is Nothing Then
    MsgBox ("OUTLOOK NON INSTALLATO")
         Else
    
            ' Outlook esiste, per cui posso istanziare anche gli altri oggetti.
            Set oNS = oApp.GetNamespace("MAPI")
    
            Set DeletedItemsFolder = oNS.GetDefaultFolder(olFolderDeletedItems)
            MsgBox (DeletedItemsFolder.Name)
         End If
    
    End Sub
    Sia in progettazione che l'eseguibile funzionano con Outlook 2003/2007/2010 ma non con 2013.

    Il problema c'è con:
    olFolderConflicts
    olFolderDeletedItems
    olFolderManagedEmail
    olFolderOutbox
    olFolderSentMail
    olFolderServerFailures
    olFolderSuggestedContacts
    olFolderToDo
    olPublicFoldersAllPublicFolders

    Mentre è tutto OK con:
    olFolderCalendar
    olFolderContacts
    olFolderDrafts
    olFolderInbox
    olFolderJournal
    olFolderJunk
    olFolderLocalFailures
    olFolderManagedEmail
    olFolderNotes
    olFolderSyncIssues
    olFolderTasks
    olFolderRssFeeds

    Ciao Marzio
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Fai un progetto di test, zippalo e pubblica il link.
  • Re: VB 6 Errore di Run-Time 91 - Variabile oggetto non definita

    Buongiorno,
    il mio progetto è una DLL per l'integrazione di Outlook con un applicativo CRM.

    Comunque il seguente codice genera il problema sia in VB6 che VBA, con Outlook 2013.
    DefLng A-Z
    Option Explicit
    
    
    Sub Main()
    
        Dim oApp As Outlook.Application
        Dim oNS As Outlook.NameSpace
        Set oApp = Outlook.Application
        Dim DeletedItemsFolder As Outlook.MAPIFolder
       
        Set oNS = oApp.GetNamespace("MAPI")
       
        Set DeletedItemsFolder = oNS.GetDefaultFolder(olFolderDeletedItems)
        
            MsgBox (DeletedItemsFolder.Name)
    
       
    
    End Sub
    
    Se sotituisci olFolderDeletedItems Con olFolderCalendar o olFolderContacts o olFolderDrafts o
    olFolderInbox o olFolderJournal o olFolderJunk o olFolderLocalFailures o olFolderManagedEmail
    o olFolderNotes o olFolderSyncIssues o olFolderTasks o olFolderRssFeeds

    è tutto OK

    Marzio
Devi accedere o registrarti per scrivere nel forum
12 risposte