【发布时间】:2020-03-22 13:29:20
【问题描述】:
所以我正在尝试编写一个简单的代码来将 csv 转换为 excel,插入一个数据透视表,然后保存它。下面的代码运行良好,但 excel 文件以 $name 的名称而不是 $name 的内容保存...而且我可以在 powershell 脚本中使用 VBA 代码吗?我想插入一个数据透视表,我只能找到它的 vba 代码....
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
InitialDirectory = [Environment]::GetFolderPath('Desktop')
Filter = 'SpreadSheet (*.csv)|*.csv'
}
$FileBrowser.ShowDialog()
$file = $FileBrowser.FileName
$name= $FileBrowser.SafeFileName
Write-Host $name
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$excel.DisplayAlerts = $false
$excel.Workbooks.Open($file)
$excel.Workbooks.item(1).SaveAs('C:\Users\User\Desktop\$name.xlsx',51)
$excel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel)
所以在这里修复代码后就是最终产品....
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
InitialDirectory = [Environment]::GetFolderPath('Desktop')
Filter = 'SpreadSheet (*.csv)|*.csv'
}
$FileBrowser.ShowDialog()
$file = $FileBrowser.FileName
$name = $FileBrowser.SafeFileName -replace ".{4}$"
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$excel.DisplayAlerts = $false
$excel.Workbooks.Open($file)
#$excel.Workbooks.Item(1).activate()
#$excel.ActiveSheet.Cells.Select()
$excel.Workbooks.item(1).SaveAs("C:\Users\User\Desktop\$name.xlsx",51)
$excel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel)
现在我想在其中添加一个数据透视表。我添加了激活工作簿并选择所有单元格的行...现在我有了 VBA 代码,但有人可以帮我将其翻译到 powershell 吗?
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"2!R1C1:R1048576C27", Version:=6).CreatePivotTable TableDestination:= _
"Sheet1!R3C1", TableName:="PivotTable3", DefaultVersion:=6
Sheets("Sheet1").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Domain")
.Orientation = xlRowField
.Position = 1
上面的 VBA 是我记录的一个宏,它为我们提供了步骤……现在我们只需要将它转换为 power shell……我迷失了,因为直到现在才弄清楚代码本身就是几个小时的修补……
【问题讨论】:
-
没人能帮忙把 VBA 代码转换成 Powershell 吗?
标签: excel vba powershell csv scripting