Misha said - "I should add that having the registry keys alone would only help 
if Excel PIAs are in the GAC as well (when installing Excel - you would choose 
.NET Interoperability support)." You probably do not have the PIAs installed.

The problem is just a matter of initialiazation order. The IDispatch support 
was not initialized by the time the "e.Visible = True" statement was executed. 
I have a fix and have just checked it in. The next IronPython drop should have 
the fix. If you want a fix now, you can add the following lines at the very 
start of PythonBinder.GetExtensionTypes.

    // Ensure that the type is initialized. If 
ReflectedTypeBuilder.RegisterAlternateBuilder was used,
    // the alternate builder will get a chance to initialize the type.
    DynamicHelpers.GetPythonTypeFromType(t);

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of nekomaho
Sent: Friday, November 16, 2007 2:47 AM
To: Discussion of IronPython
Subject: Re: [IronPython] AttributeError: '__ComObject' object has no attribute 
'Visible' with -X:PreferComDispatch

Hi,

I changed registry but I get same error.

IronPython-2.0A6>reg query 
HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\InprocServer32 /s

! REG.EXE VERSION 3.0

HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\InprocServer32
    Class       REG_SZ  Microsoft.Office.Interop.Excel.ApplicationClass
    RuntimeVersion      REG_SZ  v1.1.4322

HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\InprocServer32\12.0.0.0
    Class       REG_SZ  Microsoft.Office.Interop.Excel.ApplicationClass
    RuntimeVersion      REG_SZ  v1.1.4322

IronPython-2.0A6>ipy.exe -X:PreferComDispatch -X:TabCompletion 
-X:ExceptionDetail
IronPython console: IronPython 2.0A6 (2.0.11102.00) on .NET 2.0.50727.832
Copyright (c) Microsoft Corporation. All rights reserved.
>>> import clr
>>> from System import Type, Activator
>>> t = Type.GetTypeFromProgID('Excel.Application')
>>> e = Activator.CreateInstance(t)
>>> e.Visible = True
'__ComObject' object has no attribute 'Visible'
   場所 Microsoft.Scripting.Ast.ThrowStatement.DoExecute(CodeContext context)
   場所 Microsoft.Scripting.Ast.Statement.Execute(CodeContext context)
   場所 
Microsoft.Scripting.Actions.ActionBinder.UpdateSiteAndExecute[T](CodeContext 
callerContext, DynamicAction action, Object[] args, Object site, T& target, 
RuleSet`1& rules)
   場所 
Microsoft.Scripting.Actions.DynamicSite`3.UpdateBindingAndInvoke(CodeContext 
context, T0 arg0, T1 arg1)
   場所 
Microsoft.Scripting.Actions.DynamicSiteHelpers.UninitializedTargetHelper`7.Invoke2(DynamicSite`3
 site, CodeContext context, T0 arg0, T1 arg1)
   場所 Microsoft.Scripting.Actions.DynamicSite`3.Invoke(CodeContext context, T0 
arg0, T1 arg1)
   場所 ##29(Object[] , CodeContext )
   場所 Microsoft.Scripting.ScriptCode.Run(CodeContext codeContext, Boolean 
tryEvaluate)
   場所 Microsoft.Scripting.ScriptCode.Run(ScriptModule module)
   場所 Microsoft.Scripting.Hosting.CompiledCode.Evaluate(IScriptModule module)
   場所 Microsoft.Scripting.Hosting.ScriptEngine.ExecuteCommand(String code, 
IScriptModule module)
   場所 Microsoft.Scripting.Shell.CommandLine.RunOneInteraction()
   場所 Microsoft.Scripting.Shell.CommandLine.TryInteractiveAction()
   場所 IronPython.Hosting.PythonCommandLine.TryInteractiveAction()
   場所 Microsoft.Scripting.Shell.CommandLine.RunInteractiveLoop()
AttributeError: '__ComObject' object has no attribute 'Visible'

Thanks

> The behavior currently depends on whether or not the RCW gets strongly-typed 
> when it enters the managed world. As a workaround, the following registry 
> script Misha provided could "fix" your machine by registering the PIA:
>
> Windows Registry Editor Version 5.00
>
> [HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\InprocServer32]
> "Assembly"="Microsoft.Office.Interop.Excel, Version=12.0.0.0, 
> Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
> "Class"="Microsoft.Office.Interop.Excel.ApplicationClass"
> "RuntimeVersion"="v1.1.4322"
>
> [HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\InprocServer32\12.0.0.0]
> "Assembly"="Microsoft.Office.Interop.Excel, Version=12.0.0.0, 
> Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
> "Class"="Microsoft.Office.Interop.Excel.ApplicationClass"
> "RuntimeVersion"="v1.1.4322"
>
> Your script should work independent of whether the PIA is registered or not. 
> We will look into it and see what is going.
>
> The implementation of -X:PreferComDispatch is still not complete. We are 
> working on improving it and will enable it by default once all issues are 
> flushed out. You are on the cutting edge and providing us with advance 
> feedback :)
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of nekomaho
> Sent: Thursday, November 15, 2007 4:45 AM
> To: Discussion of IronPython
> Subject: Re: [IronPython] AttributeError: '__ComObject' object has no 
> attribute 'Visible'
>
> Hi,
>
> I use Windows XP Pro SP2 ja & Office 2007 Pro ja.
>
> IronPython-2.0A6>ipy.exe -X:PreferComDispatch -X:TabCompletion 
> -X:ExceptionDetail
> IronPython console: IronPython 2.0A6 (2.0.11102.00) on .NET 2.0.50727.832
> Copyright (c) Microsoft Corporation. All rights reserved.
>>>> import clr
>>>> from System import Type, Activator
>>>> t = Type.GetTypeFromProgID('Excel.Application')
>>>> e = Activator.CreateInstance(t)
>>>> e.Visible = True
> '__ComObject' object has no attribute 'Visible'
>    場所 Microsoft.Scripting.Ast.ThrowStatement.DoExecute(CodeContext context)
>    場所 Microsoft.Scripting.Ast.Statement.Execute(CodeContext context)
>    場所 
> Microsoft.Scripting.Actions.ActionBinder.UpdateSiteAndExecute[T](CodeContext 
> callerContext, DynamicAction action, Object[] args, Object site, T& target, 
> RuleSet`1& rules)
>    場所 
> Microsoft.Scripting.Actions.DynamicSite`3.UpdateBindingAndInvoke(CodeContext 
> context, T0 arg0, T1 arg1)
>    場所 
> Microsoft.Scripting.Actions.DynamicSiteHelpers.UninitializedTargetHelper`7.Invoke2(DynamicSite`3
>  site, CodeContext context, T0 arg0, T1 arg1)
>    場所 Microsoft.Scripting.Actions.DynamicSite`3.Invoke(CodeContext context, 
> T0 arg0, T1 arg1)
>    場所 ##29(Object[] , CodeContext )
>    場所 Microsoft.Scripting.ScriptCode.Run(CodeContext codeContext, Boolean 
> tryEvaluate)
>    場所 Microsoft.Scripting.ScriptCode.Run(ScriptModule module)
>    場所 Microsoft.Scripting.Hosting.CompiledCode.Evaluate(IScriptModule module)
>    場所 Microsoft.Scripting.Hosting.ScriptEngine.ExecuteCommand(String code, 
> IScriptModule module)
>    場所 Microsoft.Scripting.Shell.CommandLine.RunOneInteraction()
>    場所 Microsoft.Scripting.Shell.CommandLine.TryInteractiveAction()
>    場所 IronPython.Hosting.PythonCommandLine.TryInteractiveAction()
>    場所 Microsoft.Scripting.Shell.CommandLine.RunInteractiveLoop()
> AttributeError: '__ComObject' object has no attribute 'Visible'
>
> Thanks
>
>> This works for me as well.  Could you please re-run your code snippet under 
>> the -X:ExceptionDetail mode and send us the output?  Also, what versions of 
>> Windows and Office are being used?
>>
>> Thanks
>>
>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mohammad 
>> Tayseer
>> Sent: Wednesday, November 14, 2007 8:02 AM
>> To: Discussion of IronPython
>> Subject: Re: [IronPython] AttributeError: '__ComObject' object has no 
>> attribute 'Visible'
>>
>> It works for me. What version of Excel do you use??
>>
>> Mohammad Tayseer
>> http://spellcoder.com/blogs/tayseer
>>
>> ----- Original Message ----
>> From: nekomaho <[EMAIL PROTECTED]>
>>
>>
>> Hi,
>>
>> I get AttributeError in IronPython 2.0A6 & A5, but 2.0A4 is ok. why?
>>
>>
>> ________________________________
>> Be a better pen pal. Text or chat with friends inside Yahoo! Mail. See 
>> how.<http://us.rd.yahoo.com/evt=51732/*http:/overview.mail.yahoo.com/>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Users mailing list
>> Users@lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> Users mailing list
> Users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> Users mailing list
> Users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to