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

わかりました。見つけました。誰かが解決策に興味を持っていて、インスピレーションを持っているかもしれないので、私はここに投稿します。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
于 2013-01-20T23:16:26.007 に答える