• 締切済み

vbs ピボットテーブル更新 ODBC接続

現在、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 よろしくお願いいたします。

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.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 & ";" ..などのようにパスワード文字列の指定を追加すれば良いように思います。

全文を見る
すると、全ての回答が全文表示されます。
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

oracleの環境はないのでExcelでのODBC接続時の一般的なアドバイスと受け取ってください。 まず、何点か確認です。 1)VBSコードにパスワードを埋め込むという運用方法は問題ないですか? 2)該当ExcelBookを開いて、手動で更新する場合はどうしてますか?(パスワード手入力か) 手動では自動更新できるのに、VBSではパスワードを求められるという話なら、ちょっとわかりません。 現状、(2)の手動更新時にパスワードを入力しているなら、 その後にピボットテーブル右クリック[オプション]で 外部データオプション:「パスワードを保存する」にチェックを入れておくと次回以降パスワード入力を回避できます。 #セキュリティ上、問題ないならDSN設定のほうでパスワード保存しておいても良いかもしれませんが。 VBSコードにパスワードを書き込んでおいても良いならコード制御可能だと思いますが、 おまりおすすめはしません。 それでも構わない場合は補足ください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBSでExcelのオープン確認

    VBSCRIPTでエクセルに書き込むものを作っているのですが・・・ エクセルが開きっぱなしの場合、同じシートが開いて書き込めなかったりなど有りその対策を考えています。 もし開いていたらMsgBoxを出して終了させてしまおうかと思うのですがエクセルが開いているかどうか確認できません・・・ どのようにしたらよいでしょうか? wbCount = objExcel.Workbooks.Count msgbox wbCount myFlag = False for i = 1 to wbCount if objExcel.Workbooks(i).Name = strFilename then myFlag = True Exit for end if next if myFlag = True then msgBox "Open" else msgBox "not Open" end if

  • 複数のピボットテーブルのフィルタを一括選択

    マクロ(VBA2007)で、作業中の1つのシートにある、複数のピボットテーブルのレポートフィルターを一括で選択しようとしております。以下のマクロでは”ピボットテーブル1”と名前のついたピボットしか操作できませんでした。複数のピボットを一括で選択する方法を教えていただけますか?(メーカー名がA、B、Cとあるフィルターです) ******************* Sub try()   Dim pf As PivotField   Dim p As PivotItem   Set pf = ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("メーカー")   pf.Orientation = xlPageField   pf.ClearAllFilters   For Each p In pf.PivotItems     Select Case p.Value     Case "A", "C" '表示アイテム名をカンマ区切りで指定     Case Else       p.Visible = False     End Select   Next End Sub *********************** よろしくお願いいたします。

  • マクロでピボットテーブルを作成

    マクロでピボットテーブを作成したいのですが、範囲指定がうまくいきません。 Workbooks.Open Filename:="C:\出庫実績.csv" Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "出庫実績!R1C1:R458C24").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("店舗名称").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="店舗名称" ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("出庫数ケース").Orientation = _ xlDataField 出庫実績csvのデータは日々変わる為、範囲の選択がうまくいかず、ピボットテーブルの合計数が合いません。よろしくお願いします。

  • Excelマクロ ピボットテーブル シート名指定

    お世話になります。 マクロでピボットテーブルを作成しようと思い、一連の動作をマクロ記録しましたところ下記のコードが記録されました。動作は問題ないのですが、ピボットテーブルが作成されるシート名や場所が指定できません。 出来れば、ピボットテーブルを作成するシート名は"ピボット"にして一番右端に配置したいのですが下下記のコードのどこを直せば(または追加)よいのか、どなたかご教授いただけますでしょうか? ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R15C4").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("納品日").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("地区").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").AddFields RowFields:=Array("納品日", "地区" _ ), ColumnFields:="商品" ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷数量").Orientation = _ xlDataField ActiveWorkbook.ShowPivotTableFieldList = True よろしくお願い致します。 環境 Windows XP SP3 Excel2003

  • マクロでのピボットテーブルについて

    EXCELにてピボットテーブルから抜粋できる表を作ろうと考えています。 sheet1!$A$1 にはピボットテーブルがあり、そこから値を拾い、 x~yの範囲に表を作るマクロです。 変数1~3にはユーザーが指定する項目が入ります。 さらにピボットテーブルの場所を変数としたいのですが、上手く値を拾えません。 (変数にすると#REF!となります) Dim 場所 As String 場所 = "sheet1!$A$1" Worksheets("sheet2").select For x = h to i For y = j to k Cells(x, y) = Application.Evaluate("=getpivotdata(""個数"",場所,""フィールド1"",""" & 変数1 & """,""フィールド2"",""" & 変数2 & """,""フィールド3"",""" & 変数3 & """)") Next Next Cells(x, y) = Application.Evaluate("=getpivotdata(""個数"",sheet1!$A$1,[略] と、すると正しい値が拾えるのですが。 ピボットテーブルの場所を変数にしてもエラーにならないやり方をご教示いただけませんでしょうか。

  • Excel 2007 Windows7での不具合

    下記のExcel 2007 VBAマクロを Windows XP で組んでいましたが、 Windows 7 に乗り換えたとたん、強制終了してしまいます。 Workbooks.Openのアドレスは、Windows 7用に書き換えました。 何方かご教授願います。   Private Sub CommandButton63_Click()   Application.ScreenUpdating = False   Dim wb As Workbook   wbn1 = ActiveWorkbook.Name   For Each wb In Workbooks   If wb.Name = wbn1 Then   Workbooks.Open "D:\ユーザー\PC18\Documents\※※※※\※※※※.xls"   ActiveWindow.WindowState = xlMaximized    Workbooks(wbn1).Save   Application.DisplayAlerts = False   Workbooks(wbn1).Close   Else: Application.ScreenUpdating = False   End If   Next   Application.ScreenUpdating = True   End Sub

  • このVBSの修正点を教えてください。

    Dim objExcel 'Excelのオブジェクトを作成する Set objExcel = CreateObject("Excel.Application") 'Excelを見えない形で表示させる。 objExcel.Application.Visible = True 'Excelブック①のパスとシート名を選択 objExcel.Workbooks.Open("C:\Users\user\Desktop\1_作成\銀行借入調達返済\2307-2406銀行借入調達返済 (全社表示).xlsm ") objExcel.Worksheets(objExcel.Worksheets.Count).select '実行するマクロ名を指定。 objExcel.Application.Run "CopyWorksheets_And_Autofill" objExcel.Application.Run "CopyNewBook" Set objExcel = Nothing 保存はANSIで.vbsで保存しました。

  • VBSでWordの文字色変え

    VBSなのですが Wordファイルをドラッグしたら <と>で囲まれた文字の色を変更して保存する というものを考えております が <============= 部分でコンパイルエラー(ステーメントがありません) が発生します 初心者でさっぱりわからないのですが どなたかお助けを! よろしくお願いいたします 以下ソース Dim objWord Dim f Dim m If WScript.Arguments.Count<1 Then m="Hello!" MsgBox m WScript.Quit End If Set objWord=CreateObject("Word.Application") objWord.Visible=True For Each f In WScript.Arguments objWord.Documents.Open f objWord.Selection.Find.ClearFormatting objWord.Selection.Find.Replacement.ClearFormatting objWord.Selection.Find.Replacement.Font.Color = wdColorRed With objWord.Selection.Find .Text = "\<[!\>]@\>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With objWord.Selection.Find.Execute Replace:=wdReplaceAll '<======================= objWord.ActiveDocument.SaveAs f&".doc" objWord.ActiveDocument.Close Next objWord.Quit WScript.Quit

  • 図形のクリアで実行時の1004エラーになる

     指定範囲(I9:CW40)から図形(円・四角形)のクリアをするとエラーになってしまいます。終了をすればクリアはできるのですが。御教授願えませんでしようか?(尚四角形はセルの枠線上に貼り付けるようにしてあります。) Sub 図形のクリア() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim myRng As Range Dim sp As Variant Set myRng = Range("I9:CW40") For Each sp In ActiveSheet.Shapes If Not Intersect(Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then sp.Delete (ここで実行時1004のエラーになる。) End If Next Set myRng = Nothing Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub

  • vbsで複数pptxから文字列抽出したい

    vbsで複数pptx内の文字列抽出してxls出力する処理で 1つめのpptxのopen~文字列抽出~closeはうまくいくのですが 2つめのpptxをうまくobject生成できません。 デバッグ用コメントで確認すると2つめpptxを瞬時にopen~close したあとにForNextの文字列抽出が動いているようで For文で"オブジェクトがありません"となってしまいます。 どなたか解決方法をご教授願えませんでしょうか。 Sub GrepPpt(objPptFile) Dim sld,shp,rng,find_rng,tbl,find_cell Set objPpt = CreateObject("PowerPoint.Application") objPpt.Visible = True Set filex = objPpt.Presentations.Open(objPptFile) For Each sld In objPpt.ActivePresentation.Slides ←ここで For Each shp In sld.Shapes If shp.HasTextFrame Then For columnx = 0 To keywordsx.Count - 1 Set rng = shp.TextFrame.TextRange Set find_rng = rng.Find(keywordsx(columnx)) If Not find_rng Is Nothing Then arraylstx.add rng & vbTAb & shp.Name & vbTab &~(割愛) Exit For End If Next Else ~(Table検索割愛) End If Next Next filex.Close objPpt.Quit Set objPpt = Nothing End Sub