1

私はExcelからデータベースへのデータをlodaするためのssisパッケージを作成しました。私の問題は、私が手動でパスワードを削除している瞬間に、パスワード(私はパスワードを知っています)で保護されたExcelファイルです。私は200個のExcelファイルを持っているので、ssisで自動化する方法はありますか?

4

3 に答える 3

2

これは、会社のセキュリティポリシー(またはその監視)に基づいて機能する場合と機能しない場合がありますが、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
于 2012-10-26T14:57:08.950 に答える
0

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シートを接続とし​​て使用できる接続マネージャーを販売しています。

http://www.cozyroc.com/ssis/excel-connection

于 2012-10-26T13:09:13.057 に答える
0

Vinniesの回答から、別のアイデアが得られました。Excelファイルのようなapdaterを使用する場合はどうでしょうか。

保護されたファイルをexcel(vba)で開くのは簡単です。次に、ファイルをすべてこのブックにインポートするか、保護されていないファイルのコピーを作成するか、データをssis/sql-serverに直接コピーすることもできます。

しかし、これは私の提案です。Excelを使用して入力データの新しいソースを作成し、次にこの新しいデータをインポートするために何でも使用します。

于 2012-10-26T13:18:30.060 に答える