私はExcelからデータベースへのデータをlodaするためのssisパッケージを作成しました。私の問題は、私が手動でパスワードを削除している瞬間に、パスワード(私はパスワードを知っています)で保護されたExcelファイルです。私は200個のExcelファイルを持っているので、ssisで自動化する方法はありますか?
3 に答える
これは、会社のセキュリティポリシー(またはその監視)に基づいて機能する場合と機能しない場合がありますが、200個のファイルすべてを開き、パスワードなしで一時的な「保護されていない」ディレクトリに保存するクイックマクロを作成できます。次に、SSISスクリプトを実行し、それが完了したら、200個のファイルをすべて削除します(消しゴムなどの安全な削除機能を使用)
Sub ManagePWords()
Dim f(1 To 200) As Variant
Dim i As Integer
Dim origpath As String, temppath As String
Dim wb As Excel.Workbook
origpath = "c:\where_files_are_now\"
temppath = "c:\where_files_are_now\unprotected\"
f(1) = Array("filename1", "password1")
f(2) = Array("filename2", "password2")
'keep going for all 200 files
For i = 1 To UBound(f)
Set wb = Application.Workbooks.Open(origpath & f(i)(0), , , , f(i)(1))
wb.SaveAs temppath & f(i)(0) & ".xlsx", , ""
wb.Close
Next i
End Sub
MSDNによると、「パスワードで保護されたExcelファイルに接続することはできません。」
http://msdn.microsoft.com/en-us/library/ms139836(v=sql.105).aspx
処理するcsvにExcelシートの内容を読み取るカスタムスクリプトを介してアクセスする方法がある場合があります。または多分オブジェクトに。しかし、私はまだ役立つものを見つけていません。
これが役立つかもしれないSQLServerCentralからのフォーラム投稿です。PowerShellスクリプトサンプルがあります(ログインが必要です)
http://www.sqlservercentral.com/Forums/Topic885800-148-1.aspx
いずれにせよ、データを処理する前に、保護されたExcelシートからデータを取得する必要があると思います。
更新:CozyRocは、パスワードで保護されたExcelシートを接続として使用できる接続マネージャーを販売しています。
Vinniesの回答から、別のアイデアが得られました。Excelファイルのようなapdaterを使用する場合はどうでしょうか。
保護されたファイルをexcel(vba)で開くのは簡単です。次に、ファイルをすべてこのブックにインポートするか、保護されていないファイルのコピーを作成するか、データをssis/sql-serverに直接コピーすることもできます。
しかし、これは私の提案です。Excelを使用して入力データの新しいソースを作成し、次にこの新しいデータをインポートするために何でも使用します。