2016-07-27 117 views
1

我一直在尝试在Windows PowerShell中编写一个脚本,该脚本从工作表单元格中取值,然后使用它更改切片器的值。但是,绊倒我的部分应该是最简单的。任何时候我尝试访问Microsoft Excel中的工作表图层时,都会收到一个错误消息,指出:“您无法对空值表达式调用方法。”无法通过powershell访问Excel的工作表图层

我已经尝试了几种方法,声明活动工作表,添加工作表,试图引用现有的工作表,任何尝试访问工作表都给出了同样的错误。正因为如此,我只能在失败之前编码多达6行代码。这里是最后一行失败的代码示例。

$FilePath = "C:\Users\mudkip\desktop\slicer\TestMe.xlsx"  
$SheetName = "Sheet1"  
$objExcel = New-Object -Com "Excel.Application"  
$objExcel.Visible = $true  
$workbook = $ObjExcel.workbooks.open($filePath)  
$worksheet = $workbook.sheets.item($SheetName)  

其它线路,如

$WorksheetA = $Workbook.Worksheets.add() 

也引起同样的空值表达式失败。如果任何人有任何线索可能导致工作表图层展现出对任何形式的交互的奇怪阻力,我很想听到它,但我完全难以理解为什么复制粘贴的代码适用于许多其他用户失败,当我尝试使用它。 我正在使用Windows 8.1 Enterprise, Microsoft Excel版本2013. 通过Windows PowerShell ISE运行PowerShell。

+0

如果您手动打开此文件(即双击它)是否会引发任何警告,警报等?也许它会提示你的安全性,或者更新链接等。你确定“Sheet1”存在吗? (请尝试通过索引引用它?)或者工作簿是受保护的?您通常无法在受保护的文件上添加工作表。 –

+1

这些都是值得检查的好东西,不幸的是,他们没有一个能够帮我解决问题。 Sheet1确实存在,并且通常打开工作表(双击)并通过隔离的powershell行工作正常。该表没有被保护,尽管它确实表示数据连接已被禁用。我的印象是,这是为了sql-server/cube连接,但启用它们并不能解决问题。 – Mudkip

+0

如果你回应'$ workbook | get-member'是否将'sheets'和/或'worksheets'显示为Workbook类的可用成员? –

回答

1

重新安装Microsoft Excel,问题消失。