嗨我需要一个用于我的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错误消息。
答案 0 :(得分:2)
您可以使用当前日期设置变量 - 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")
答案 1 :(得分:0)
我遇到一个需要打开Excel密码保护文件的问题。但是,即使遵循本文中的答案和重复的答案(open a password protected Excel in powershell),它仍然提示我输入密码。 我通过添加第六个参数WriteResPassword来解决。我的最终代码是:
$xl = New-Object -comobject Excel.Application
$xl.DisplayAlerts=$False
$wb=$xl.Workbooks.open("$myFile",3,$false,5,"$mypassword","$mypassword")
希望这可以帮助在Powershell中使用密码保护的文件的其他人。