【问题标题】:Error when trying to protect Excel file with PowerShell尝试使用 PowerShell 保护 Excel 文件时出错
【发布时间】:2019-08-22 03:46:54
【问题描述】:

我正在尝试执行用于密码保护 Excel 文件的 PowerShell 脚本。

这是脚本:

Set objExcel = CreateObject(“Excel.Application”)

objExcel.Visible = True

objExcel.DisplayAlerts = FALSE

Set objWorkbook = objExcel.Workbooks.Add

Set objWorksheet = objWorkbook.Worksheets(1)


objWorksheet.Cells(1, 1).Value = Now

objWorkbook.SaveAs “C:\Test.xlsx”,,”%reTG54w”

objExcel.Quit

我尝试使用“以 PowerShell 运行”运行它,但它会自动关闭,我也尝试使用 PowerShell ISE,结果如下:

它的文字是这样的:

At C:\Users\gasgu\OneDrive\Desktop\pwoershell.ps1:14 char:39
+ objWorkbook.SaveAs “C:\Test.xlsxâ€,,â€%reTG54wâ€
+                                       ~
Missing expression after ',' in pipeline element.
At C:\Users\gasgu\OneDrive\Desktop\pwoershell.ps1:14 char:39
+ objWorkbook.SaveAs “C:\Test.xlsxâ€,,â€%reTG54wâ€
+                                       ~
Missing argument in parameter list.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : MissingExpression

我从这个网址找到了这个脚本:https://devblogs.microsoft.com/scripting/how-can-i-password-protect-an-excel-spreadsheet/

但如果值得一提的话,我现在要做的是从我的 PC 中提取一个 Excel 文件 (.xlsx) 并用密码保护它(创建一个新副本),在这个脚本中我没有理解是它是否从某个地方选择了 excel 文件,因为我没有看到明确说明这一点的行。

编辑:我正在执行的脚本最终不是 PowerShell,根据@BigBen 的说明(请参阅 cmets 和批准的答案),该脚本是 VBS。他在 PowerShell 中提供了执行所需结果的脚本。

【问题讨论】:

  • 这看起来像 VBScript,而不是 PowerShell。
  • 你确定吗?在网站中,他们将其称为 powershell,以及其他示例
  • 当然。那不是Powershell。该页面的原始问题可以追溯到 2005 年。我认为它当时在不同的站点上,或者它被错误地迁移到了 Powershell 论坛。
  • 哦,也许我们正在做点什么:) 你知道我可以实现我需要的方法吗?密码保护一个excel文件?我需要自动完成,我正在使用 SSIS,我可以执行 powershell、VB 脚本、C# 脚本

标签: excel powershell


【解决方案1】:

那是 VBScript,而不是 Powershell。也许试试这个:

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$excel.DisplayAlerts = $false
$wb = $excel.Workbooks.Add()
$wb.Worksheets("Sheet1").Cells(1, 1).Value = Get-Date
$wb.SaveAs("C:\Test.xlsx",[Type]::Missing,"%reTG54w")
$excel.Quit()

【讨论】:

  • 这会生成一个受密码保护的 Excel 文件,但我该如何选择已创建的 Excel 文件并为其设置密码? (如果保存为新版本就更好了)
  • 你需要类似$excel.Workbooks.Open($yourfilename) 而不是$excel.Workbooks.Add()
  • 这太棒了,它甚至会生成新文件作为副本等等,谢谢! :)
  • [类型]::Missing = XlSaveAsAccessMode
  • @MahmoodShehab 我不确定你是从哪里得到的...文件格式是一个可选参数,但XlSaveAsAccessMode 不是一个有效的选项。
猜你喜欢
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
相关资源
最近更新 更多