在64位环境中使用32位COM对象

时间:2013-07-16 16:23:33

标签: .net excel powershell 64-bit ms-office

我在Win7 / 64bit上使用PowerShell 3。 我试图使用.net of excel(32bit)和这个命令: [microsoft.office.interop.excel.xlfileformat] 我收到了这个错误: 无法找到类型microsoft.office.interop.excel.xlfileformat:确保已加载包含此类型的程序集。 我使用Win7 / 32bit之前没有出现此错误。 也许有人知道如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

您需要加载Excel互操作程序集,如下所示:

Add-Type -AssemblyName Microsoft.Office.Interop.Excel

如果需要使用Excel互操作程序集中定义的类型,则必须先将该程序集加载到PowerShell中,然后才能引用其中定义的类型。您正在使用枚举(xlFileFormat),因此PowerShell需要该类型的定义。

答案 1 :(得分:0)

尝试在Redemption.dll中为PowerShell 64 bit运行Outlook 2010 32 bit时遇到类似问题。这就是我解决它的方法:

regsvr32.exe 'C:\path\Redemption.dll'
regsvr32.exe 'C:\path\Redemption64.dll'

$Job = Start-Job -ScriptBlock {
    $routlook = New-Object -COM Redemption.RDOSession
    $routlook
    } -RunAs32

Wait-Job -Job $Job
Receive-Job -Job $Job

显然Start-Job可以在ScriptBlock模式下切换32 bit。这对我需要的东西非常有用!