嗨,我需要一个我的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错误消息。
您可以使用当前日期设置变量 - 1如下所示:
$MMddyyyy=[DateTime]::Today.AddDays(-1).ToString("MMddyyyy")
$objExcel.Workbooks.Open("\\files\SHC\Daily_$MMddyyyy.xls",0,$False,1,"password")
更多“Powershell-y”,使用Get-Date而不是[DateTime] :: Today对象。
$MMddyyyy=(Get-Date).AddDays(-1).ToString("MMddyyyy")
$objExcel.Workbooks.Open("\\files\SHC\Daily_$MMddyyyy.xls",0,$False,1,"password")
我遇到了一个问题,我需要打开一个受Excel密码保护的文件。然而,即使按照这篇文章中的答案和副本(open a password protected Excel in powershell),它仍然提示我输入密码。我通过添加第6个参数WriteResPassword解决了这个问题。我的最终代码是:
$xl = New-Object -comobject Excel.Application
$xl.DisplayAlerts=$False
$wb=$xl.Workbooks.open("$myFile",3,$false,5,"$mypassword","$mypassword")
希望这可以帮助其他任何在Powershell中与密码保护文件斗争的人。