用于打开加密excel文件的脚本,该文件的动态文件名以“结束”;“mmddyyyy”;

用于打开加密excel文件的脚本,该文件的动态文件名以“结束”;“mmddyyyy”;,excel,powershell,vbscript,ssis,encryption,Excel,Powershell,Vbscript,Ssis,Encryption,您好,我需要一个脚本为我的SSIS包,将打开我的加密excel文件,其中有一个动态文件名以“mmddyyyy”结尾。 我有一个powershell脚本,它将使用文件名打开并重置密码,但我不知道如何在那里使用动态文件名。 此外,我想我更喜欢一个vb脚本,它将打开文件并删除密码(或者可能不需要在打开时提取数据?),因为我可能会将其设置为SQL作业,以便每天提取并发送到SQL 下面是精简代码的一个示例: objExcel = new-object -comobject excel.applicatio

您好,我需要一个脚本为我的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”:InvokeMethodOnFull错误消息。

您可以使用当前日期-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密码保护的文件。然而,即使按照本文中的答案和副本(),它仍然提示我输入密码。 我通过添加第6个参数WriteResPassword解决了这个问题。我最后的代码是:

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

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

您的具体问题是什么?Powershell允许使用参数,因此您可以将名称传递到脚本中。。。到目前为止,您有什么代码?我的powershell脚本需要每天打开一个文件,更改密码,删除一些行,然后不使用密码保存。我可以做任何事情,除了在每个文件的末尾用mmddyyy ext打开一个动态文件名。将:$Workbook=$objExcel.Workbooks.Open(\\files\SHC\Daily\u 04262013.xls),0,$False,1,“password”)替换为要打开的代码(\\files\SHC\Daily\u mmddyyyy.xls,0,$False,1,“password”),其中mmddyyyyyy总是“昨天”。+1
(获取日期)
将比
[DateTime]::今天
,尽管如此。嗨,非常感谢。它可以打开文件,但不会保存:$a=$工作簿.SaveAs(“\\files\SHC\Daily\uu$YYYYMMDD.xls”)它出现运行时异常???@AnsgarWiechers添加了一个Get\u date版本。@AnsgarWiechers看起来你在2012年也回答了这个问题@LornaRobinson您运行此应用程序的用户ID是否拥有网络UNC路径的权限?有时powershell在网络驱动器的权限方面存在问题。。。