1

こんにちは、「mmddyyyy」で終わる動的なファイル名を持つ、暗号化された Excel ファイルを開く SSIS パッケージのスクリプトが必要です。ファイル名を使用してパスワードを開いてリセットする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

次のように、現在の日付 - 1 で変数を設定できます。

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

[DateTime]::Today オブジェクトの代わりに Get-Date を使用して、より「Powershell-y」にします。

$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 に答える