1

嗨,我需要一个用于我的 SSIS 包的脚本,该脚本将打开我的加密 excel 文件,该文件的动态文件名以“mmddyyyy”结尾。我有一个 powershell 脚本,它将使用文件名打开并重置密码,但我不知道如何在那里使用动态文件名。另外,我想我更喜欢一个可以打开文件并删除密码的 vb 脚本(或者只要我可以在它打开时提取数据就可以了?),因为我可能会将其设置为 SQL 作业来提取并每天发送到 sql。

以下是精简代码的示例:

objExcel = new-object -comobject excel.application 
$objExcel.Visible = $True 
$objExcel.DisplayAlerts = $False 
$MMDDYYYY=[DateTime]::Today.AddDays(-1).ToString("MMddyyyy")    
$objExcel.Workbooks.Open("\\files\Reporting\Census\Daily_$MMDDYYYY.xls",0,$False,‌​1,"password")
$Workbook.Password = ""
$strPath="\\\files\Reporting\Census\Daily_$MMDDYYYY.xls" 
$a.activeworkbook.SaveAs($strPath) 
$objExcel.Quit() 
$Workbook=$Null 
$objExcel=$Null 
[GC]::Collect()

Powershell 还显示“fullyqualifiederrorid”:InvokeMethodOnNull 错误消息。

4

2 回答 2

2

You can set a variable with the current date - 1 like this:

$MMddyyyy=[DateTime]::Today.AddDays(-1).ToString("MMddyyyy")
$objExcel.Workbooks.Open("\\files\SHC\Daily_$MMddyyyy.xls",0,$False,1,"password")

More "Powershell-y", using Get-Date instead of the [DateTime]::Today object.

$MMddyyyy=(Get-Date).AddDays(-1).ToString("MMddyyyy")
$objExcel.Workbooks.Open("\\files\SHC\Daily_$MMddyyyy.xls",0,$False,1,"password")
于 2013-04-30T21:02:59.240 回答
0

我遇到了一个问题,我需要打开一个受密码保护的 Excel 文件。然而,即使按照这篇文章中的答案和副本(在 powershell 中打开受密码保护的 Excel),它仍然提示我输入密码。我通过添加第 6 个参数 WriteResPassword 解决了。我的最终代码是:

$xl = New-Object -comobject Excel.Application
$xl.DisplayAlerts=$False
$wb=$xl.Workbooks.open("$myFile",3,$false,5,"$mypassword","$mypassword")

希望这可以帮助其他在 Powershell 中处理受密码保护的文件的人。

于 2019-03-23T16:16:45.440 回答