Excel 使用powershell筛选列

Excel 使用powershell筛选列,excel,powershell-3.0,Excel,Powershell 3.0,下面的代码是一个VBA代码,它通过过滤列a将数据拆分为不同的工作表。如何将脚本转换为powershell Sub Test() Dim Sh As Worksheet Dim Rng As Range Dim c As Range Dim List As New Collection Dim Item As Variant Dim ShNew As Worksheet Application.ScreenUpdating = False ' ***

下面的代码是一个VBA代码,它通过过滤列a将数据拆分为不同的工作表。如何将脚本转换为powershell

Sub Test()
   Dim Sh As Worksheet
   Dim Rng As Range
   Dim c As Range
   Dim List As New Collection
   Dim Item As Variant
   Dim ShNew As Worksheet
   Application.ScreenUpdating = False
'   *** Change Sheet name to suit ***

   Set Sh = Worksheets("Sheet1")
   Set Rng = Sh.Range("A2:A" & Sh.Range("A65536").End(xlUp).Row)
   On Error Resume Next
   For Each c In Rng
      List.Add c.Value, CStr(c.Value)
   Next c
   On Error GoTo 0
   Set Rng = Sh.Range("A1:G" & Sh.Range("A65536").End(xlUp).Row)
   For Each Item In List
      Set ShNew = Worksheets.Add
      ShNew.Name = Item
      Rng.AutoFilter Field:=1, Criteria1:=Item
      Rng.SpecialCells(xlCellTypeVisible).Copy ShNew.Range("A1")
      Rng.AutoFilter
   Next Item
   Sh.Activate
   Application.ScreenUpdating = True
End Sub
很抱歉回复晚了,我编辑了我的脚本,没有像我上一篇文章中那样的错误。我还可以在A列中看到过滤器图标

$Excelpath = "c:\sccm\book1.xls"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $True
$ExcelWorkBook = $Excel.Workbooks.Open($ExcelPath)
$ExcelWorkSheet = $Excel.WorkSheets.item("Sheet1")
$ExcelWorkSheet.activate()
$Excel.Worksheets.Item("Sheet2").Delete() #Delete Sheet 2
$Excel.Worksheets.Item("Sheet3").Delete() #Delete Sheet 3
$xlCellTypeLastCell = 11
$xlCellTypeVisible = 12
$Range = $ExcelWorkSheet.UsedRange
$Range.Font.bold = "true"
$Lastcell = $Range.SpecialCells($xlCellTypeLastCell)
$LastRow = $Lastcell.row
$headerrange = $ExcelWorkSheet.Range("A1")
$headerrange.Autofilter(1,"A1")
从这里开始,我不知道如何继续

Thanks

如果VBA脚本/宏中已经有工作代码,为什么需要将其更改为PowerShell?此外,您需要比“it失败”更具描述性-描述发生了什么,给出任何错误消息,等等。您是如何运行的?我看到的最直接的问题是,您试图在创建Excel应用程序对象(以及其他一些变量)之前使用它。但我正在尝试学习自动筛选的工作原理,并使用powershell解析excel中的每一行。也许它对我处理不同的报告很有用。错误MSG是:不能对空值表达式调用方法。在第5行,char:1+$Lastcell=$Usedrange.SpecialCells($xlCellTypeLastCell)方法调用失败,因为[System.String]不包含名为“Range”的方法。在第14行char:1+$Filter=$worksheet1.Range(“A1”).Select()不能对空值表达式调用方法。在第15行char:1+$Filter.Autofilter()| Out null将错误消息放在帖子中。在评论中很难阅读。你还没有回答你是如何运行脚本的。我很惊讶3号线没有出错。