How do I import a COM object namespace/enumeration in Python?
Question: I'm relatively new to programming/python, so I'd appreciate any help I can
get. I want to save an excel file as a specific format using Excel through
COM. Here is the code:

    
    
    import win32com.client as win32 
    
    def excel():
        app = 'Excel'
        x1 = win32.gencache.EnsureDispatch('%s.Application' % app)
        ss = x1.Workbooks.Add()
        sh = ss.ActiveSheet
        x1.Visible = True
        sh.Cells(1,1).Value = 'test write'
        ss.SaveAs(Filename="temp.xls", FileFormat=56)
        x1.Application.Quit()
    
    if __name__=='__main__':
        excel()
    

My question is how do I specify the FileFormat if I don't explicitly know the
code for it? Browsing through the documentation I find the reference at about
a FileFormat object. I'm clueless on how to access the [XlFileFormat
object](http://msdn.microsoft.com/en-
us/library/microsoft.office.interop.excel.xlfileformat.aspx) and import it in
a way that I can find the enumeration value for it.

Thanks!


Answer: This question is a bit stale, but for those reaching this page from Google (as
I did) my solution was accessing the constants via the
`win32com.client.constants` object instead of on the application object itself
[as suggested by Eric](http://stackoverflow.com/questions/1646230/how-do-i-
import-a-com-object-namespace-enumeration-in-python/1647147#1647147). This
lets you use enum constants just like in the VBE:

    
    
    >>> import win32com.client
    >>> xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
    >>> C = win32com.client.constants
    >>> C.xlWorkbookNormal
    -4143
    >>> C.xlCSV
    6
    >>> C.xlErrValue
    2015
    >>> C.xlThemeColorAccent1
    5
    

Also, unless you've manually run the `makepy` utility, the constants may not
be available if initializing the application with the regular
`win32com.client.Dispatch(..)` method, which was another issue I was having.
Using `win32com.client.gencache.EnsureDispatch(..)` (as the questioner does)
checks for and generates the Python bindings at runtime if required.

I found [this ActiveState
page](http://docs.activestate.com/activepython/2.4/pywin32/html/com/win32com/HTML/QuickStartClientCom.html)
to be helpful.

