• 締切済み

ODBAパスワードをマクロに組みたい(Excel)

Excel2010のマクロでODBCのデータを拾ってきたいのですが、ODBCにアクセスする際、 パスワード入力を求められます。 パスワード入力もマクロ内に組みたいのですが、記述方法がわかりませんので、教え てください。 エクセルのマクロについての知識は、記録させたものを実行する、若干の記述変更が できるくらいで、VBAに関する知識はほぼ無いに等しいです。 記録させたマクロの記述は次のようになっています。(コピペではなく、プリントアウト を手入力してますので、誤記があるかもしれません。) 1. Sub Macro() 2. Cells Select 3. Selection ClearContents '上2行で取り込み済みのデータを全削除 4. With ActiveSheet. ListObjects. Add(SourseType:=0, Sourse:=Array(Array(_ 5. "ODBC;DNS=de-ta-be-su; UID=yu-za-ID ; ;DBQ=DE-TA-BA-SU;DBA=W;... (以下略) '上2行で取り込みの条件を記述(実際は数行) 6. .RowNumbers = False 7. .FillAdjacentFormulas = False 8. .PreserverFormatting = True 9. .RefreshOnFileOpen = False 10. .BackgroundQuery = True 11. .RefreshStyle = xllnserDeleteCells 12. .SavePassword = False 13. .SaveData = True 14. .AdjustColumnWidth = True 15. .RefreshPeriod = 0 16. .ListObject.DisplayName = 'テーブル_xxxxx_からのクエリ_1' 17. .Refresh BackgroundQuery:= False 18. End With 19. End Sub マクロを1行づつ実行すると17行目の記述を実行する際にODBCのパスワード入力を求め られる状態です(データベース名とユーザーIDは入力されている)。 5行目に PWD=pasuwa-do とか入れてみたのですがダメでした。 12行目をTrueにしてあげればいいのでしょうか? 又、13行目のSaveDataとはデータベース側を書き換えるって意味でしょうか?エクセル側 を書き換えるって意味でしょうか? 稚拙な文面でわかりづらいかもしれませんが、よろしくお願いいたします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

通常は5行目に "ODBC;DNS=de-ta-be-su; UID=yu-za-ID ; ;DBQ=DE-TA-BA-SU;DBA=W;... (以下略);PWD=pasuwa-do;" といった具合と思いますが。 savedata、savepasswordはlistobjectじゃなく多分querytableのメンバなので、そこの部分のマクロについては覚え間違い転記ミスじゃありませんか。 意味はオブジェクトブラウザからヘルプを確認すれば、いずれも説明されています。

関連するQ&A

  • excel2007マクロ複数のtxtファイル取り込みについて

    excel2007マクロ複数のtxtファイル取り込みについて 複数のtxtファイルを1つのシートに1つのファイルを取り込むようなマクロを作成したいのですが上手くいきません。以下は実際の入力内容です。このマクロを実行すると下から5行目の .Refresh BackgroundQuery:=False の箇所にエラーが表示されるのですが、解決方法がわかりません。 わかりにくい質問で申し訳ありませんがお答え頂けると助かります。 宜しくお願いします。 Sub Macro4() ' ' Macro4 Macro ' ' Dim i As Integer For i = 1 To 10 With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Documents and Settings\owner\My Documents\test3\BD3.ds0_i.txt", _ Destination:=Range("$A$1")) .Name = "BD3.ds0_i" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = True .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = True .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Sheets("Sheet(i+1)").Select Next i End Sub

  • このマクロ処理をVBAにしたいのですが…

    テキストファイル→Excelへの取込み処理をVBAで記述したいのですが、上手く行きません。どなたか、ご存知の方いらっしゃいましたらご回答よろしくお願いします。 マクロ処理で試すとこんなカンジなのですが… With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\temp\S5097.txt", _ Destination:=Range("A3")) .Name = "SXXXX" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileOtherDelimiter = "|" .TextFileColumnDataTypes = Array(1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub

  • Excel VBA 【QueryTables.Add】について

    おしえてください。 マクロの自動記録で、外部からのデータ取り込みをしましたら 以下の様になりました。 With ActiveSheet.QueryTables.Add(Connection:= _ "○○;■■;●●;;□□;▲▲", Destination:=Range("A1")) .CommandText = Array("SELECT * FROM △△.▽▽") .Name = "☆☆ からのクエリ" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .Refresh BackgroundQuery:=False End With このコードについて勉強したくてヘルプやネットで調べましたが どうしても「.Name …」以降の説明がみつかりません; 詳しく説明の載っているサイトもしくは本などご存じでしたら 教えていただけないでしょうか。 よろしくお願い致します。

  • マクロでExcelパスワードを入力する方法

    教えて頂きたいのですが、 今Excelのフォームボタンにマクロを使って、 別のExcelファイルを開けるように設定していますが、 そのファイルにパスワードを掛けており、フォームボタンを押すと、 まず、そのパスワード入力のダイアログが出ます。 それを、フォームボタンを押したときのマクロに組み込み、 パスワード入力のダイアログを出さずに開く事って可能でしょうか? 現在のフォームボタンに登録しているマクロの記述は下記の通りです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub Macro11() ' ' Macro11 Macro ' マクロ記録日 : 2008/9/25 ユーザー名 : ************ ' ' Range("I29").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー I29にハイパーリンクにてアドレスを入力しているだけのものです。 宜しくお願いいたします。

  • Excelマクロ 繰り返し?の設定方法を教えて下さ

    BetMasterという競馬ソフトに記述されている 「TXT\2」のデータを抽出し、Sheets("出馬表集計")に貼り付け、 「TXT\1」のデータを抽出し、Sheets("結果集計")に貼り付ける 以下のようなマクロを組んでいます。1日終わるごとにTXT\2とTXT\1を作成してこの集計をしていたのですが、約1年間サボってしまい100回近く、このマクロを作動させなければならなくなりました。 そこで、TXT\1~100まで作成して、TXT\2とTXT\1の貼り付けが終わったら、「TXT\4とTXT\3」、「TXT\6とTXT\5」、「TXT\8とTXT\7」...............と「TXT\100とTXT\99」まで繰り返し抽出と貼り付けを行うようにしたいのですがどうしたらよいでしょうか。 問題は、50回繰り返すことと、2回目以降は前回終了の次の行に貼り付けるという点です。 よろしくお願い致します。 'BetMasterから出馬表データの取り込み ActiveWorkbook.Worksheets.Add With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\BetMaster\TXT\2.", Destination:=Range("A1")) .Name = "1." .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With 'Sheets("出馬表集計")に貼り付け Cells.Select Application.CutCopyMode = False Selection.Copy Sheets("出馬表集計").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select ActiveWindow.SelectedSheets.Delete 'BetMasterから結果データの取り込み ActiveWorkbook.Worksheets.Add With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\BetMaster\TXT\1.", Destination:=Range("A1")) .Name = "1." .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 _ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With 'Sheets("結果集計")に貼り付け Cells.Select Application.CutCopyMode = False Selection.Copy Sheets("結果集計").Select   Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select ActiveWindow.SelectedSheets.Delete

  • Webクエリで困っています

    以下のマクロを作りました。Webクエリで、セルA1に入力してあるURLを読み込んで表を取り込み、必要なところを選択してコピーするようにしたいのです。しかし、実行すると上から3行目まで黄色になってエラーになります。特に3行目には矢印が表示されています。いろいろ調べましたが結局分かりませんでした。宜しくお願いします。 ------------------------------------------------------ Sub クエリで取得() ' ' クエリで取得 Macro ' マクロ記録日 : 2009/7/30 ユーザー名 : charlie ' ' With ActiveSheet.QueryTables.Add(Connection:= _ Range("A1").Value _ , Destination:=Range("A2")) .Name = "resultlist?tbws=x0p01a&hd=20090716&jcd=01_2" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = False .RefreshOnFileOpen = False .BackgroundQuery = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = True .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With Range("A19:Q54").Select Selection.Copy End Sub ----------------------------------------------------------

  • 【ExcelVBA】外部データ取り込みマクロ

    お世話になります。 日付からファイル名を探し出し、外部データの取り込みのマクロで インポートさせたいと考えておりますがファイル名が存在しないと エラーが表示されます。VBAを始めたばかりなのでおかしい場所が解りません。 ご教示いただけますでしょうか。 ---------------------------------------------- ・既存データを削除する。 ・前月度のテキストデータを取得し、インポートを行う。 ・外部データの取り込みはマクロ記録を使用し修正。 ・変数にファイル名が格納された事は確認済み。 ・ファイルパス:固定 ・ファイル名規則:「yymm.txt」 ---------------------------------------------- Sub データ入力表() Worksheets("データ入力表").Activate Columns("A:B").ClearContents imptest Worksheets("セッション数").Activate End Sub Sub imptest() yy = Year(Date) mm = Format(Date - 30, "mm") yymm = Right(yy, 2) & mm & ".txt" With ActiveSheet.QueryTables.Add(Connection:="TEXT;I:\temp\%yymm%" _ , Destination:=Range("A1")) .Name = "1011" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 9, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub

  • エクセルで選択してるセルに決まった動作をマクロに

    いつもお世話になっております。 手動で選択したセルに対して決まった動作をさせたいのですが、マクロの記録では最初に選択したセル番地で動くことになるので困っています。 やりたいことは、例えばA列の5~6行目を選択して、そのセルの内容を文字区切りで横に展開したいのです。 これをマクロの記録では Sub Macro1() Range("A5:A7").Select Selection.TextToColumns Destination:=Range("A5"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ :="\", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _ 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True End Sub となるのですが、この最初の行のRange("A5:A7”)Selectをその時に選んだセルで下のコードが実行されるようにしたいのですが。

  • データの取込におけるドライブの指定について

    エクセルのSheet1に設置した集計ボタンによって、Sheet2にCSVを取り込む処理をさせました。 しかし、csvのあるドライブが常に固定されていないためにドライブを選択できるようにしたいのです。 下記はマクロの記録で作成した記述ですが、3行目のHをSheet1のセルA1の値で指定させる方法を教えて下さい。 Sheets2.Select Cells.Select With ActiveSheet.QueryTables.Add(Connection:="TEXT;H:\売上集計表.csv", _  Destination:=Range("A1")) .Name = "売上集計表_29" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .Refresh BackgroundQuery:=False End With 素人のため、上記マクロをApplication.Run"@"で処理させています。 他にスマートな記述がありましたらその方法も教えて下さい。

  • microsoft query でのSQLからのデータ取り込み

    SQLサーバーに存在するデータを、microsoft queryを使ってエクセルに取り込む作業をVBAにて自動化しようとしています。 取り込むデータベースファイルはSQLサーバーと接続されたアクセスファイル(.adpファイル)を指定しました。 途中まではマクロの記憶にてコーディングできたのですが、マクロを実行すると、「SQLサーバーログイン」のダイアログが表示され、パスワードを求められてしまいます。ちなみにパスワードを入力すれば、問題なくエクスポートされます。 できればこのパスワードも登録しておき、最後まですべて自動化したいのですが、何か方法はありますでしょうか。 念のため、作成したコードと問題のパスワードダイアログを添付致します。 With ActiveSheet.QueryTables.Add(Connection:= _ "OLEDB;Provider=SQLOLEDB.1;Data Source=OEM_COMPUTER\DB;Initial Catalog=sf0;User ID=USER;Password=""""" _ , Destination:=Range("A1")) .CommandType = xlCmdTable .CommandText = Array("""dbo"".""V_数値合計""") .Name = "adp1" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .SourceConnectionFile = _ "C:\Documents and Settings\owner\デスクトップ\業務\adp1.adp" .Refresh BackgroundQuery:=False End With End Sub

専門家に質問してみよう