質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

38480閲覧

VBAで環境設定せずにDB接続したい

lupus_dingo

総合スコア257

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

3クリップ

投稿2015/07/08 02:01

編集2015/07/08 02:04

VBAでDBを参照、更新するツールを作って配布しようと思っています。
VBAでDB接続する際にODBCを使うとコントロールパネルから接続情報を指定する必要がありますが、そのような設定を一切せずに、かつ簡単にVBAの中だけで完結する方法はあるのでしょうか?
あれば、接続部分のサンプルソースが欲しいです。

ADOを使うと設定が要らないという記事を見つけたのですがサンプルソースが見つかりません。

ツールを動かす環境:
windows7,8
excel2010
DB:リモートのmysql
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ここのコードはどうでしょうか。
接続部分だけ抜粋すると、以下の様になります。

lang

1Set Cn = CreateObject( "ADODB.Connection" ) 2strDriver = "{MySQL ODBC 5.3 Unicode Driver}" 3strServer = "localhost" 4strDb = "DB名" 5strUser = "root" 6strPass = "パスワード" 7ConnectionString = _ 8"Provider=MSDASQL" & _ 9";Driver=" & strDriver 10ConnectionString = ConnectionString & ";Server=" & strServer 11ConnectionString = ConnectionString & ";Database=" & strDb 12ConnectionString = ConnectionString & ";UID=" & strUser 13ConnectionString = ConnectionString & ";PWD=" & strPass 14ConnectionString = ConnectionString & ";" 15Cn.Open ConnectionString 16

こちらにも説明があります。

いずれにしても、配布先マシンへのMySQLのODBCドライバのインストールは必要と思います。

投稿2015/07/08 02:37

編集2015/07/08 02:40
eripong

総合スコア1546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lupus_dingo

2015/07/08 08:50

回答ありがとうございます。 ODBCドライバのインストールが必要というのはODBCデータソースアドミニストレータでMysqlのデータソースを新規作成することであっているでしょうか?
lupus_dingo

2015/07/09 03:13 編集

回答ありがとうございます。 VBAからmysqlなどDBにアクセスするにはドライバをダウンロード、インストールと接続プログラムが必須。加えてODBC接続の場合はデータソースの編集が必要ということですね。わかってきたような気がします。
eripong

2015/07/09 03:22

はい。 その通りと思います。
guest

0

1.目的のデータベースへ最低限接続できる、ドライバが無いと接続出来ないのは理解可能かと。
2.MDAC / JET-MDB は、Windows 7 / 8 ならば、標準で入っています。
Windows NT ~ 幾たびかの変遷、OSのSP&パッチによる、細かい仕様違いがあります。
3.いにしえの、UDLファイル相当で可能な接続は、ADO / ADO.NET で記述可能です。
ODBC x32 / ODBC x64 で、ドライバが異なる様に、VBAも、x32 / x64 の違いが
OFFICEレベルで出来てしまいましたから、注意が必要です。
Windows 7/8 x64 , Windwos 7/8 x32 を用意して、夫々で、拡張子:UDLのファイルを
作って、編集してみてください。実体は、テキストファイルです。
どこかで見た、MS SQL Serverの接続設定の様な、画面が出て来る筈です。
検索するのであれば、metadata collection 辺りからなのですが、慣れていないと、
難しいかも&VBA用の古い情報がでてくるかどうか。
4.ADO / ADO.NET での、ODBC / OLEdb / 各Native Client の、接続方法の違いを理解してください。
使用可能な、SQL、ワイルドカード等も各々微妙に異なります。
MySQL であれば、MySQL Connector / MySQL Connector.NET 他の情報を、確認してください。
ODBC / OLEdb / 各Native Client の、x32/x64 版のどちらかだけだったり、
提供されていない場合がある事に、注意してください。
5.接続文字列は、the connection string reference の様なサイトで、
調べられます。

投稿2015/07/08 02:50

編集2015/07/08 02:58
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lupus_dingo

2015/07/08 08:55

回答ありがとうございます。 どうやら簡単にはできなそうですね。。 EclipseのプラグインでDBに接続する際はODBCの設定をいじらずにプラグインの設定だけで接続できたのですがそれはJDBCというライブラリのおかげなのでしょうか?
daive

2015/07/08 17:16

jdbcとは で、答えの一端が検索可能です。聞くより早いので、検索してみてください。 ’ VBA から、ADO&MySQL を使用する場合は、 VBA Microsoft ActiveX Data Objects excel vba mysql 接続 などで、検索してみてください。 接続文字列さえできてしまえば、 他のDBと、似たような物です。 ⇒応用編で、MDB / MS-SQL / Oracle / MySQL / CSV / EXCEL なども、  接続文字列が作れれば、接続できるようになります。 ODBCは、ODBCの御作法で、OLE DB は OLE DBの御作法があるだけです。 知らないと嵌る注意点は、ワイルドカードと、パラメタライズドクエリでの パラメータの記述と、渡し方。 で、VBA縛りを外すと、.NET Framework + Office.Interop.Excel や、情報が少ないですが、XLL、VSTOが使用可能です。 ’ ODBCドライバが古いけれど、判り易そうなサイト例 Excel VBA と MySQL http://kawairi.jp/weblog/vita/201207176651 ここの、コメント欄にあるようなツールもあったりします。 Vectorなどで、探してみてください。 ’ EXCELでお仕事 http://www.asahi-net.or.jp/~ef2o-inue/top01.html ’ The Connection Strings Reference http://www.connectionstrings.com/ MySQL Connector/ODBC 5.2 http://www.connectionstrings.com/mysql/
daive

2015/07/08 17:18

「 接続文字列が作れれば、接続できるようになります。」は、 対応ドライバが入っている前程です。
lupus_dingo

2015/07/08 23:29

回答ありがとうございます。 ドライバについてまだよくわかってないですね。url参考にさせてもらいます。詳しい解説ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問