• 締切済み

VBAからMySQLにコマンドファイルを渡すには

いつも楽しく勉強させていただいております。 環境はWin7、Office2007、MySQL5.5.28です。 データはMySQL上にあり、それを集計した結果をExcelまたはcsv形式で取り出すプログラムを開発中です。 集計の表側(ブレークダウン)や絞込みの条件は可変なので、AccessでMySQLに渡すコマンドを編集し、テキストファイルとして出力します。 このテキストファイルを実行するのに目下のところ次の二通りで行っています。 1.MySQLのクライアント画面から下記のように実行 source C:\Users\meglin\Documents\サマリー.sql 2.コマンドプロンプト画面から下記のように実行 "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql どちらの方法でも快適に動きます。 近々そのプログラムを運用ベースに乗せたいのですが、オペレーションをする上司が「あの黒い画面(MySQLのクライアント画面/コマンドプロンプト画面)を触るのがコワイ。すべてAccessから対応できないか」と言います。 要するに上記コマンドのサマリー.sqlをAccessの中から起動したいのです。 できますでしょうか。 おそらくShell関数を使うのだと思って下記のように書いてみたのですが、うまく動いてくれません。 Shell("""C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql"" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql") どうしたらいいでしょうか。 最初はAccessからMySQLにODBC接続とADOで1行ずつ実行してみたのですが、集計の列と行が多いので処理時間がかかり実用的ではありません。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>黒い画面 vbsなどで以下のような処理をしてみては? 'test.vbs Set WshShell = WScript.CreateObject("WScript.Shell") Return = WshShell.Run("コマンド・・・", 0)

meglin888
質問者

お礼

yambejpさん、回答ありがとうございます。 結果からいうとNGでした。 Ret = WshShell.Run("""C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql"" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql",0) としてみたのですが、結果は変わらず(正常に動けば集計後のイメージのテーブルができます)。 第二パラメータの0を取って Ret = WshShell.Run("""C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql"" -u root -D meglindb -proot < C:\Users\meglin\Documents\サマリー.sql") とやってみたのですが、黒い画面が一瞬開いて文字列がどーっと流れるのが見えるのでMySQLの起動はできているのだと思います。 yambejpさんのヒントは参考になりましたが、きっと私のサマリー.sqlファイルを渡す書き方がマズいのでしょう。

meglin888
質問者

補足

MySQLでなくWindowsの方に移動します。ありがとうございました。

関連するQ&A