1

我设法使用了 com1.2.3 库,但如果它已经打开,我只能使用 excel。

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

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的工作代码?

4

1 回答 1

1

好的,我找到了。我在这里发帖是因为有人可能对解决方案感兴趣并且可能有灵感。我在某处读到应该使用 coCreateInstance 而不是 createObject 。所以下面的代码应该触发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
于 2013-01-20T23:16:26.007 回答