in reply to Re^2: "Type mismatch" Error While Using Win32:OLE for MS Outlook
in thread "Type mismatch" Error While Using Win32:OLE for MS Outlook

No type library matching "Microsoft Outlook" found

Is Outlook installed on your machine? If so, what version?

Replies are listed 'Best First'.
Re^4: "Type mismatch" Error While Using Win32:OLE for MS Outlook
by dushyant (Acolyte) on Jul 03, 2015 at 12:31 UTC

    Yes OutLook is installed, its "Microsoft Office Professional Plus 2013". Please check output of below code it returned outlook object.

    #! D:\Straberry\perl\bin\perl -w use strict; use Win32::OLE qw/in/; use Win32::OLE::Const 'Microsoft Outlook'; #use Win32::OLE::Variant; my $OL = Win32::OLE->GetActiveObject('Outlook.Application') || Win32:: +OLE->new('Outlook.Application') or die "$!\n";; my $NameSpace = $OL->GetNameSpace("MAPI"); my $Folder = $NameSpace->GetDefaultFolder("olFolder"); #print ref($Folder->{Items}) . "\n"; #foreach my $subfolder ( in $Folder->Folders) { # printf "%s\n", $subfolder->{Name}; #} print "OLE object's properties:\n"; foreach my $Key (sort keys %$OL) { my $Value; eval {$Value = $OL->{$Key} }; $Value = "***Exception***" if $@; $Value = "<undef>" unless defined $Value; $Value = '['.Win32::OLE->QueryObjectType($Value).']' if UNIVERSAL::isa($Value,'Win32::OLE'); $Value = '('.join(',',@$Value).')' if ref $Value eq 'ARRAY'; printf "%s %s %s\n", $Key, '.' x (40-length($Key)), $Value; }

    Output of Above code:

    D:\Perl_Project\OutLook>test1.pl
    No type library matching "Microsoft Outlook" found at D:\Perl_Project\OutLook\test1.pl line 4.
    Win32::OLE(0.1712): GetOleTypeLibObject() Not a Win32::OLE::TypeLib object at D:/Straberry/perl/vendor/lib/Win32/OLE/Const.pm line 49.
    Win32::OLE(0.1712) error 0x80020005: "Type mismatch" in METHOD/PROPERTYGET "GetDefaultFolder" argument 1 at D:\Perl_Project\OutLook\test1.pl line 9.
    OLE object's properties:
    Application ............................. _Application
    Assistance .............................. IAssistance
    COMAddIns ............................... COMAddIns
    Class ................................... 0
    DefaultProfileName ...................... Outlook
    Explorers ............................... _Explorers
    Inspectors .............................. _Inspectors
    IsTrusted ............................... 0
    LanguageSettings ........................ LanguageSettings
    Name .................................... Outlook
    Parent .................................. <undef>
    PickerDialog ............................ PickerDialog
    ProductCode ............................. {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
    Reminders ............................... _Reminders
    Session ................................. _NameSpace
    TimeZones ............................... _TimeZones
    Version ................................. 15.0.0.4569
    D:\Perl_Project\OutLook>

      The first warning message means that no Outlook typelibrary is installed on your machine. This means that all Outlook constants like olFolder will not work. They are numerical values, so using them as strings make no sense. You can try and use Google to find the numerical value of each constant and then declare the constants yourself:

      use constant 'olFolder' => 2; ...