Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Excel 在列中拆分结果_Excel_Vba_Powershell - Fatal编程技术网

Excel 在列中拆分结果

Excel 在列中拆分结果,excel,vba,powershell,Excel,Vba,Powershell,我有一个日志输出到CSV文件生成的结果 是否有一种方法可以使用公式或简单的VBA分割结果,以便路径的信息为a列,访问的相应值为B列 路径:Microsoft.PowerShell.Core\FileSystem::C:\Users\vma\Desktop\VMADMIN\csv 访问:{System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule,Syst

我有一个日志输出到CSV文件生成的结果

是否有一种方法可以使用公式或简单的VBA分割结果,以便路径的信息为a列,访问的相应值为B列

路径:Microsoft.PowerShell.Core\FileSystem::C:\Users\vma\Desktop\VMADMIN\csv 访问:{System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule}

路径:Microsoft.PowerShell.Core\FileSystem::C:\Users\vma\Desktop\VMADMIN\Test 访问:{System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule}

路径:Microsoft.PowerShell.Core\FileSystem::C:\Users\vma\Desktop\VMADMIN\test1 访问:{System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule}

路径:Microsoft.PowerShell.Core\FileSystem::C:\Users\vma\Desktop\VMADMIN\test2 访问:{}

路径:Microsoft.PowerShell.Core\FileSystem::C:\Users\vma\Desktop\VMADMIN\Test3 访问:{System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule,System.Security.AccessControl.FileSystemAccessRule}


这是非常非常粗糙的,一点也不防弹,但也许这是你要找的东西的样板

Sub PathAccessSplit()

  Dim wsFrom, wsTo As Worksheet
  Dim rowFrom, rowTo, lastRow As Integer
  Dim cellVal As String

  Set wsFrom = Sheets("Sheet1")
  Set wsTo = Sheets("Sheet2")

  lastRow = wsFrom.Cells(wsFrom.Rows.Count, "A").End(xlUp).Row
  rowTo = 1

  For rowFrom = 1 To lastRow
    cellVal = wsFrom.Cells(rowFrom, 1).Text

    If (Left(cellVal, 4) = "Path") Then
      wsTo.Cells(rowTo, 1).Value = cellVal
    ElseIf (Left(cellVal, 6) = "Access") Then
      wsTo.Cells(rowTo, 2).Value = cellVal
      rowTo = rowTo + 1
    End If


  Next rowFrom

End Sub

当然,它假定源数据在Sheet1中,并且输出将重定向到Sheet2。很容易让它覆盖现有的工作表,但这取决于您想要什么。

如果输出长度不同,这是否可行?我正在寻找一个vba sub,我可以执行它,因为输出的长度会随着每个日志的不同而不同。您的输入文件是由PowerShell生成的。显然,您正在将
格式列表
输出写入.csv文件。为什么这样做而不是生成正确的CSV输出?