"Tim Golden" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Bill Davy wrote: >> and since then have been busy with work, and my other job, and the >> garden. > > Aha! So you're English, are you? Looks like you're in the West Country. > Weather map suggests you're not short of rain over there :) > >> Now I am back looking at this (and using WInUSB to talk to a Maxim 3421E >> etc etc but that's another story). So any help today will be much >> appreciated. >> Rgds, > > Can't remember what the particular obstacles were you > were facing, but this runs OK on my setup - > Python 2.5.2 / pywin32 211 / Outlook 2003: > > <code> > import os, sys > import win32com.client > constants = win32com.client.constants > > def items (contacts): > items = contacts.Items > item = items.GetFirst () > while item: > yield item > item = items.GetNext () > > # > # Add whatever fields you like from: > # http://msdn.microsoft.com/en-us/library/aa210907(office.11).aspx > # > FIELDS = ['FullName', 'CompanyName', 'Email1Address'] > > outlook = win32com.client.gencache.EnsureDispatch ("Outlook.Application") > ns = outlook.GetNamespace ("MAPI") > for contact in items (ns.GetDefaultFolder (constants.olFolderContacts)): > if contact.Class == constants.olContact: > print contact > for field in FIELDS: > print " ", field, "=>", getattr (contact, field, "<Unknown>") > > </code> > > Hope that helps. > TJG
jUST IN CASE,. i CUT'NPASTED THE PROGRAM: import os, sys import win32com.client constants = win32com.client.constants def items (contacts): items = contacts.Items item = items.GetFirst () while item: yield item item = items.GetNext () # # Add whatever fields you like from: # http://msdn.microsoft.com/en-us/library/aa210907(office.11).aspx # FIELDS = ['FullName', 'CompanyName', 'Email1Address'] outlook = win32com.client.gencache.EnsureDispatch ("Outlook.Application") ns = outlook.GetNamespace ("MAPI") for contact in items (ns.GetDefaultFolder (constants.olFolderContacts)): if contact.Class == constants.olContact: print contact for field in FIELDS: print " ", field, "=>", getattr (contact, field, "<Unknown>") --------------------------------------------------------------------------------------------------- And then I ran it: Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.2.2 >>> ================================ RESTART >>> ================================ >>> Traceback (most recent call last): File "H:/Personal/OutlookIF1/t2.py", line 18, in <module> outlook = win32com.client.gencache.EnsureDispatch ("Outlook.Application") File "C:\Python25\Lib\site-packages\win32com\client\gencache.py", line 536, in EnsureDispatch mod = EnsureModule(tla[0], tla[1], tla[3], tla[4], bForDemand=bForDemand) File "C:\Python25\Lib\site-packages\win32com\client\gencache.py", line 393, in EnsureModule module = GetModuleForTypelib(typelibCLSID, lcid, major, minor) File "C:\Python25\Lib\site-packages\win32com\client\gencache.py", line 262, in GetModuleForTypelib AddModuleToCache(typelibCLSID, lcid, major, minor) File "C:\Python25\Lib\site-packages\win32com\client\gencache.py", line 554, in AddModuleToCache dict = mod.CLSIDToClassMap AttributeError: 'module' object has no attribute 'CLSIDToClassMap' >>> ------------------------------------------------------------------------------------------------- Outlook is running fine. This is how the fucntion where the failure occurs begins: def AddModuleToCache(typelibclsid, lcid, major, minor, verbose = 1, bFlushNow = not is_readonly): """Add a newly generated file to the cache dictionary. """ fname = GetGeneratedFileName(typelibclsid, lcid, major, minor) mod = _GetModule(fname) # if mod._in_gencache_ is already true, then we are reloading this # module - this doesn't mean anything special though! mod._in_gencache_ = 1 dict = mod.CLSIDToClassMap info = str(typelibclsid), lcid, major, minor for clsid, cls in dict.items(): clsidToTypelib[clsid] = info ----------------------------------------------------------------------------------------------- Yes, we have suffiicient rain but the gaden needed it. I am about to become the proud tenant of half an allotment. Still, this time last year we had floods. TIA, Bill -- http://mail.python.org/mailman/listinfo/python-list