Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过powershell访问Excel的工作表层_Excel_Powershell_Worksheet - Fatal编程技术网

无法通过powershell访问Excel的工作表层

无法通过powershell访问Excel的工作表层,excel,powershell,worksheet,Excel,Powershell,Worksheet,我一直在尝试在windows powershell中编写一个脚本,从工作表单元格中获取一个值,然后用它更改切片器的值。然而,困扰我的部分应该是最简单的。每当我尝试访问Microsoft Excel中的工作表层时,都会收到一个错误,该错误表示:“不能对空值表达式调用方法。” 我尝试过几种方法,声明活动工作表、添加工作表、尝试引用现有工作表,任何访问工作表的尝试都会出现相同的错误。因此,在失败之前,我最多只能编写6行代码。下面是最后一行失败的代码示例 $FilePath = "C:\Users\mu

我一直在尝试在windows powershell中编写一个脚本,从工作表单元格中获取一个值,然后用它更改切片器的值。然而,困扰我的部分应该是最简单的。每当我尝试访问Microsoft 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

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

如果手动(即双击)打开此文件,是否会引发任何警告、警报等。?可能是提示您注意安全,或更新链接等。您确定
“Sheet1”
存在吗?(改为尝试按索引引用它?)或者工作簿是否受保护?您通常不能在受保护的文件上添加工作表。这些都是需要检查的好东西,不幸的是,没有一个工作表适合我。Sheet1确实存在,正常(双击)和通过隔离的powershell线打开工作表都可以正常工作。该工作表不受保护,尽管它确实表示数据连接已被禁用。但我的印象是,这是针对sql server/cube连接的,启用它们并不能解决问题。如果您回显
$workbook | get member
,它是否将
工作表和/或
工作表显示为工作簿类的可用成员?如果对每个类执行
操作,会发生什么($工作簿中的$worksheet){$worksheet.name}
如果它打印出工作表名称,请尝试添加一个
中断
以在找到工作表时退出循环?我成功地解决了问题,不幸的是,我仍然不确定最初是什么原因造成的。我刚刚重新安装了Microsoft Excel,突然不再出现工作表错误。技术支持级别:尝试将其关闭,然后重试再见;————谢谢你的帮助,大卫!