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
>> [email protected]
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com