.net 在64位环境中使用32位COM对象
我在Win7/64位上使用powershell 3。 我正在尝试将.net的excel(32位)与以下命令一起使用: [microsoft.office.interop.excel.xlfileformat] 我得到了这个错误: 找不到类型microsoft.office.interop.excel.xlfileformat:请确保已加载包含此类型的程序集。 我以前使用Win7/32位时没有这个错误。.net 在64位环境中使用32位COM对象,.net,excel,powershell,64-bit,ms-office,.net,Excel,Powershell,64 Bit,Ms Office,我在Win7/64位上使用powershell 3。 我正在尝试将.net的excel(32位)与以下命令一起使用: [microsoft.office.interop.excel.xlfileformat] 我得到了这个错误: 找不到类型microsoft.office.interop.excel.xlfileformat:请确保已加载包含此类型的程序集。 我以前使用Win7/32位时没有这个错误。 也许有人知道如何解决这个问题?您需要像这样加载Excel互操作程序集: Add-Type -A
也许有人知道如何解决这个问题?您需要像这样加载Excel互操作程序集:
Add-Type -AssemblyName Microsoft.Office.Interop.Excel
如果需要使用Excel互操作程序集中定义的类型,则必须先将该程序集加载到PowerShell中,然后才能引用其中定义的类型。您使用的是枚举(xlFileFormat),因此PowerShell需要该类型的定义。在尝试为
Outlook 2010 32位运行PowerShell 64位中的Redemption.dll
时遇到类似问题。我就是这样解决的:
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
有一个开关,可以在32位
模式下运行ScriptBlock
。这对我需要的东西非常有用 因此,我的office是32位,mt环境是64位,这两者之间没有任何联系?没有,因为COM服务器(Excel)的进程已用完。我也有这个问题,但每次我再次运行脚本时,它都工作得很好。原来我是在Excel程序集开始构建电子表格后加载的。所以第一次它会出错,但当我再次尝试时,Excel程序集已经在运行,一切正常。因此,非常感谢您帮助我更好地理解Powershell Excel命令,非常感谢!