プロが教える店舗&オフィスのセキュリティ対策術

現在、vbsを使用してExcelピボットテーブルを自動更新する仕組みを作成しております。
更新対象のピボットテーブルですが、ODBC接続でoracle(10g)を参照しており、
ピボット更新時にパスワードの入力を求められます。
これをvbsファイル内でパスワードを渡して実行するように出来ないでしょうか?


下記のスクリプトのみだとパスワードにnullが挿入されましたとうエラーがでて更新できません。


'1.1. ファイルコピー
'objFSO.CopyFile szWBTemplate, szWBOutput,True

'2.0. ワークブック OPEN
objEXCEL.Workbooks.Open szWBTemplate

'2.1. エクセル画面を非表示
objEXCEL.DisplayAlerts = False
objEXCEL.Visible = False
objEXCEL.ScreenUpdating = False
objEXCEL.Calculation = -4135

WScript.sleep(1000)

objEXCEL.ScreenUpdating = True
objEXCEL.Calculation = -4105

'2.2. Reflesh Pivot Tables
For Each objxlSh in objEXCEL.Worksheets
For Each objPvt In objxlSh.PivotTables
objPvt.RefreshTable
Next
Next



よろしくお願いいたします。

A 回答 (2件)

ぁ、すみません。

ひょっとしたら読み違っちゃってますか。
>これをvbsファイル内でパスワードを渡して実行するように出来ないでしょうか?
InputBoxなどでパスワード入力して渡す、という事ですか?
その場合は

Option Explicit
Call main
Sub main()
Dim XL
Dim pc
Dim x

x = InputBox("pass?")
If Len(x) =0 Then
WScript.Quit
End If
Set XL = CreateObject("excel.application")
XL.Visible = True
With XL.Workbooks.Open("C:\temp\temp.xls")
For Each pc In .PivotCaches
pc.Connection = "ODBC;DSN=データソース名;UID=ユーザ名;PWD=" & x & ";"
pc.Refresh
Next
End With
'XL.Quit
Set XL = Nothing
End Sub

こんな感じでどうでしょうか。
一度、PivotCachesのConnectionプロパティを調べてみて下さい。そこに
"PWD=" & x & ";"
..などのようにパスワード文字列の指定を追加すれば良いように思います。
    • good
    • 0

oracleの環境はないのでExcelでのODBC接続時の一般的なアドバイスと受け取ってください。



まず、何点か確認です。
1)VBSコードにパスワードを埋め込むという運用方法は問題ないですか?
2)該当ExcelBookを開いて、手動で更新する場合はどうしてますか?(パスワード手入力か)

手動では自動更新できるのに、VBSではパスワードを求められるという話なら、ちょっとわかりません。

現状、(2)の手動更新時にパスワードを入力しているなら、
その後にピボットテーブル右クリック[オプション]で
外部データオプション:「パスワードを保存する」にチェックを入れておくと次回以降パスワード入力を回避できます。

#セキュリティ上、問題ないならDSN設定のほうでパスワード保存しておいても良いかもしれませんが。

VBSコードにパスワードを書き込んでおいても良いならコード制御可能だと思いますが、
おまりおすすめはしません。
それでも構わない場合は補足ください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!