SQLの窓 イラストAC フリー素材

2014年04月04日

VBScript : 3種のMDB(または accdb)内の テーブル一覧取得方法

ADO を使うのが通常ですが、ADOX または、Access を直接使用してもかまいません。
※ このテストは、Microsoft Office 2010 がインストールされている環境で実行しています。
' ▼ コマンドプロンプトを開いて、終了したら PAUSE する。
Crun()

' ************************************************
' 基本設定
' ************************************************
' このスクリプトが存在するディレクトリを取得
strCurDir = WScript.ScriptFullName
strCurDir = Replace( strCurDir, WScript.ScriptName, "" )

' ************************************************
' OpenSchema
' ************************************************
Set Mdb = Wscript.CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strCurDir & "\販売管理B.mdb" & ";"
Mdb.Open strConnection
Set Schema = Mdb.OpenSchema( 20 ,Array(Empty,Empty,Empty,Empty) )

Wscript.Echo "販売管理B.mdb のテーブル一覧を OpenSchema で取得します" & vbCrLf
Do while not Schema.EOF

	Wscript.Echo Schema.Fields( "TABLE_NAME" ).Value
	Schema.MoveNext
Loop
Mdb.Close()

Wscript.Echo vbCrLf

' ************************************************
' ADOX.Catalog
' ************************************************
Set Adox = Wscript.CreateObject("ADOX.Catalog")
Adox.ActiveConnection = strConnection

Wscript.Echo "販売管理B.mdb のテーブル一覧を ADOX.Catalog で取得します" & vbCrLf
For Each Table in  Adox.Tables

	Wscript.Echo Table.Name

Next

Wscript.Echo vbCrLf


' ************************************************
' Access.Application
' ************************************************
Set Access = Wscript.CreateObject("Access.Application")
Access.OpenCurrentDatabase( strCurDir & "\販売管理B.mdb" )

Wscript.Echo "販売管理B.mdb のテーブル一覧を Access.Application で取得します" & vbCrLf
For Each Table in  Access.CurrentDb.TableDefs

	Wscript.Echo Table.Name

Next

For Each View in  Access.CurrentDb.QueryDefs

	Wscript.Echo View.Name

Next

Wscript.Echo vbCrLf

' ************************************************
' OpenSchema
' ************************************************
Set Mdb = Wscript.CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & strCurDir & "\販売管理B.accdb" & ";"
Mdb.Open strConnection
Set Schema = Mdb.OpenSchema( 20 ,Array(Empty,Empty,Empty,Empty) )

Wscript.Echo "販売管理B.accdb のテーブル一覧を OpenSchema(2007以降) で取得します" & vbCrLf
Do while not Schema.EOF

	Wscript.Echo Schema.Fields( "TABLE_NAME" ).Value
	Schema.MoveNext
Loop
Mdb.Close()

Wscript.Echo vbCrLf

' ************************************************
' ADOX.Catalog
' ************************************************
Set Adox = Wscript.CreateObject("ADOX.Catalog")
Adox.ActiveConnection = strConnection

Wscript.Echo "販売管理B.accdb のテーブル一覧を ADOX.Catalog(2007以降) で取得します" & vbCrLf
For Each Table in  Adox.Tables

	Wscript.Echo Table.Name

Next

Wscript.Echo vbCrLf


' ************************************************
' Access.Application
' ************************************************
Set Access = Wscript.CreateObject("Access.Application")
Access.OpenCurrentDatabase( strCurDir & "\販売管理B.accdb" )

Wscript.Echo "販売管理B.accdb のテーブル一覧を Access.Application で取得します" & vbCrLf
For Each Table in  Access.CurrentDb.TableDefs

	Wscript.Echo Table.Name

Next

For Each View in  Access.CurrentDb.QueryDefs

	Wscript.Echo View.Name

Next

Wscript.Echo vbCrLf


Wscript.Echo("【"&WScript.ScriptName&"】の処理が終了しました" & vbCrLf & vbCrLf )

' **********************************************************
' Cscript.exe で実行を強制
' ウィンドウをアクティブにし、最大化ウィンドウとして表示(3)
' Cscript.exe の実行終了後 pause で一時停止
' **********************************************************
Function Crun( )

	Dim str,WshShell

	str = WScript.FullName
	str = Right( str, 11 )
	str = Ucase( str )
	if str <> "CSCRIPT.EXE" then
		str = WScript.ScriptFullName

		Set WshShell = CreateObject( "WScript.Shell" )

		strParam = " "
		For I = 0 to Wscript.Arguments.Count - 1
			if instr(Wscript.Arguments(I), " ") < 1 then
				strParam = strParam & Wscript.Arguments(I) & " "
			else
				strParam = strParam & Dd(Wscript.Arguments(I)) & " "
			end if
		Next
		Call WshShell.Run( "cmd.exe /c cscript.exe " & Dd(str) & strParam & " & pause", 3 )
		WScript.Quit
	end if

End Function
' **********************************************************
' 文字列を " で囲む関数
' **********************************************************
Function Dd( strValue )

	Dd = """" & strValue & """"

End function


処理結果
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

販売管理B.mdb のテーブル一覧を OpenSchema で取得します

MSysAccessStorage
MSysACEs
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.mdb のテーブル一覧を ADOX.Catalog で取得します

MSysAccessStorage
MSysACEs
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.mdb のテーブル一覧を Access.Application で取得します

MSysAccessStorage
MSysACEs
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧


販売管理B.accdb のテーブル一覧を OpenSchema(2007以降) で取得します

MSysAccessStorage
MSysACEs
MSysComplexColumns
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
MSysResources
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.accdb のテーブル一覧を ADOX.Catalog(2007以降) で取得します

MSysAccessStorage
MSysACEs
MSysComplexColumns
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
MSysResources
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.accdb のテーブル一覧を Access.Application で取得します

MSysAccessStorage
MSysACEs
MSysComplexColumns
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
MSysResources
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧


【table_list.vbs】の処理が終了しました
関連する記事

【VBScriptの最新記事】
posted by at 2014-04-04 00:52 | VBScript | このブログの読者になる | 更新情報をチェックする