2013-01-20 37 views
1

我设法使用com1.2.3库,但我只能使用excel,如果它已经打开。Ole32 createObject“excel.application”失败win7 64bits

我不知道为什么这段代码不起作用;

main = coRun $ do 
    idEx <- createObject "Excel.Application" 

我在cmd中得到这个错误:

*** Exception: ComException {comException = ComError (-2147467262), 
comExceptionMsg = "(0x80004002) This interface is not supported\r\n"}. 

,我读了在Win7有可能从COM32推出64B应用的可能性。那是对的吗?

任何人都有一个工作代码,将从win7推出excel?

回答

1

好的我找到了。我在这里发帖,因为有人可能对解决方案感兴趣,并可能有灵感。我读的地方,而不是createObject,应该使用coCreateInstance。 所以下面的代码应该可以防火excel

import System.Win32.Com 
import System.Win32.Com.Automation 

iidIDispatch_unsafe = mkIID "{00020400-0000-0000-C000-000000000046}" 

newExcel = coRun $ do 
    clsidExcel <- clsidFromProgID "Excel.Application" 
    pIunknown <- coCreateInstance clsidExcel Nothing LocalProcess iidIDispatch_unsafe 
    let pExl = castIface pIunknown :: IDispatch() 
    propertySet "Visible" [inBool True] pExl 
相关问题