Hiko.Blog Excel VBA活用術

「Excel VBAで仕事を効率化!初心者でもできる自動化のコツ」

MENU

Accessのクエリコードを SQLコードに変換

先生: 今日は、VBSスクリプトを使って、AccessのクエリからSQLを取り出す方法を説明するで。まず最初に、Accessを開く準備をするんや。

生徒: なるほど!Accessを開くんですね、どうやって?

先生: そうやで!まず、CreateObject("Access.Application")っていうコマンドを使って、Accessアプリケーションを作るんや。それから、OpenCurrentDatabaseを使って、実際のデータベースを開くんや。

生徒: なるほど、データベースを開くんですね!その後は?

先生: 次に、どのクエリのSQLを取りたいかを指定するんや。ここでは、query = "YourQueryName"で、クエリの名前を決めてるんやで。

生徒: じゃあ、クエリを指定するってことですね?

先生: その通り!そのクエリからSQLを取り出すために、db.QueryDefs(query).SQLを使って、SQLを取り出すんや。

生徒: それで、SQLを取り出すんですね!じゃあ、どうやってそのSQLを表示するんですか?

先生: WScript.Echo sqlQueryを使って、取り出したSQLを画面に表示するんや。

生徒: なるほど!それでSQLが表示されるんですね。次はどうするんですか?

先生: 次に、同じようにSQLをファイルに保存する方法を教えるで。まず、さっきと同じようにAccessを開いて、SQLを取り出すんやけど、今度はファイルに保存するんや。

生徒: そうか、SQLをファイルに保存するんですね!どんな方法で?

先生: まず、CreateObject("WScript.Shell").SpecialFolders("Desktop")で、デスクトップのパスを取得するんや。それから、fso.CreateTextFileを使って、QuerySQL.txtという名前のファイルを作るんやで。

生徒: それで、ファイルを作って、SQLを保存するんですね!

先生: そうや!textFile.WriteLine sqlQueryで、SQLをそのファイルに書き込むんや。そして、最後にtextFile.Closeで、ファイルを閉じるんや。

生徒: ファイルに保存した後はどうするんですか?

先生: 最後に、WScript.Echoを使って、「SQLがデスクトップに保存されました」とメッセージを表示して、処理が終わるんや。

生徒: わかりました!これで、SQLを取り出してファイルに保存できるんですね!

先生: その通り!これで、AccessのクエリからSQLを取り出して、簡単にファイルに保存できるようになるんやで。

 
 

' VBS Script to convert Access Query to SQL
Dim accessApp, db, query, sqlQuery

' Create Access Application object
Set accessApp = CreateObject("Access.Application")

' Open the Access database (指定するデータベースのパスに変更してください)
accessApp.OpenCurrentDatabase "C:\path\to\your\database.accdb"

' Get the query name (クエリの名前を指定)
query = "YourQueryName"

' Get the SQL of the query
Set db = accessApp.CurrentDb()
sqlQuery = db.QueryDefs(query).SQL

' Output the SQL query
WScript.Echo sqlQuery

' Clean up
db.Close
accessApp.Quit
Set db = Nothing
Set accessApp = Nothing

 

' VBS Script to save Access Query SQL to a text file on Desktop
Dim accessApp, db, query, sqlQuery, fso, textFile, desktopPath

' Create Access Application object
Set accessApp = CreateObject("Access.Application")

' Open the Access database (指定するデータベースのパスに変更してください)
accessApp.OpenCurrentDatabase "C:\path\to\your\database.accdb"

' Get the query name (クエリの名前を指定)
query = "YourQueryName"

' Get the SQL of the query
Set db = accessApp.CurrentDb()
sqlQuery = db.QueryDefs(query).SQL

' Define the path to save the text file on Desktop
desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\QuerySQL.txt"

' Create FileSystemObject to write to the text file
Set fso = CreateObject("Scripting.FileSystemObject")
Set textFile = fso.CreateTextFile(desktopPath, True)

' Write the SQL query to the text file
textFile.WriteLine sqlQuery

' Close the text file
textFile.Close

' Output a message
WScript.Echo "SQL has been saved to " & desktopPath

' Clean up
db.Close
accessApp.Quit
Set textFile = Nothing
Set fso = Nothing
Set db = Nothing
Set accessApp = Nothing