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

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

ただいまの
回答率

90.61%

  • MySQL

    5715questions

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

  • VBA

    1736questions

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

  • Excel

    1475questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 18K+

lupus_dingo

score 251

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

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

ツールを動かす環境:
windows7,8
excel2010
DB:リモートのmysql
よろしくお願いします。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

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

Set Cn = CreateObject( "ADODB.Connection" )
strDriver = "{MySQL ODBC 5.3 Unicode Driver}"
strServer = "localhost"
strDb = "DB名"
strUser = "root"
strPass =  "パスワード"
ConnectionString = _
"Provider=MSDASQL" & _
";Driver=" & strDriver
ConnectionString = ConnectionString & ";Server=" & strServer
ConnectionString = ConnectionString & ";Database=" & strDb
ConnectionString = ConnectionString & ";UID=" & strUser
ConnectionString = ConnectionString & ";PWD=" & strPass
ConnectionString = ConnectionString & ";"
Cn.Open ConnectionString

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/08 17:50

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

    キャンセル

  • 2015/07/08 17:55 編集

    いえ、そうではなく、
    http://mysqlweb.net/category/4066054-1.html
    http://mysqlweb.net/category/4066221-1.html
    にあるように、MySQLのODBCドライバのmsiをダウンロードしてきて、
    実行するというような意味です。

    データソースの作成は不要と思います。

    キャンセル

  • 2015/07/09 12:09 編集

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

    キャンセル

  • 2015/07/09 12:22

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

    キャンセル

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 17:55

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

    キャンセル

  • 2015/07/09 02: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/

    キャンセル

  • 2015/07/09 02:18

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

    キャンセル

  • 2015/07/09 08:29

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

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    テキストデータをVBAで週ごとに分けたい

    2015/12/01,* cbdl,345 2015/12/02,Ubcmf Gspn DTW,2 2015/12/03,* gspou,375 ・ ・ ・ こんなテキ

  • 解決済

    dll内の処理からapp.configの取得

    Visual Studio 2012 Professionalで開発しています。 app.configの値が取得できていない状態です。 1.VB.NETでクラスを作成。(D

  • 解決済

    PCとPLC間の通信処理について

    現在、PCとPLC間の通信を無手順で作成しています。 三菱のMXコンポーネントを使用しない通信ソフトを作ろうとしているのですが 動作させたいコードの書き方がイマイチわかりません

  • 受付中

    【VBA】サブディレクトリも含めたファイル一覧を素早く取得したい

    以下のSample1とSample2はどちらもC:\Tempのサブディレクトも含めたファイル一覧を取得する関数です。 Sample1は'Sample2'よりも実行時間が短いですが、

  • 解決済

    VBA高速化について

    20個のエクセルファイルを読み込み、特定のシートにあるテーブルから特定の値を探し出し、その右横にあるセルの値を取り出します。 集計用のエクセルのテーブルでも、同じ特定の値をテーブル

  • 解決済

    自動購入ツールについて

    プログラミング初心者です。 あるサイトで自動で購入をするプログラムを書こうとしていますが、どの言語でプログラムを書いたら良いかわかりません。 具体的には、supremeというフ

  • 解決済

    ExcelVBAの勉強法について

    今年で2年目を迎えるプログラマーです。今度仕事でExcelVBAを使って帳票出力するプログラムを作ることになったのですが、なぜかVBAは苦手で、書き方が覚えられません。これまでJa

  • 解決済

    見やすい If の書き方 (後で見やすいコードの書き方が分からない_1)

     見やすい If の書き方 大体パターンは決まっているのですが 見やすい書き方が分かりません... 皆さまはどのように書いているのでしょうか? 教えて頂きたいです。  悩んでい

同じタグがついた質問を見る

  • MySQL

    5715questions

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

  • VBA

    1736questions

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

  • Excel

    1475questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。