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

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

ただいまの
回答率

87.48%

excelとmysqlの接続の手法を教えて下さい

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 12K+

score 24

こちらのサイトを参考にしてODBCを使用し、簡単にmysql上のデーターベースを読み込ませることが出来ました。
ODBCでmysqlに接続

しかし一般的に企業ではこのような手法を使い、mysqlと接続をしているものなのでしょうか?
まだしっかりODBCを使った方法を調べていないため、参照しかできません。

VBAでプログラミングし、mysqlを参照や追記などをさせることは難しいのでしょうか?
アドバイスを頂けると嬉しいです。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 5

checkベストアンサー

0

普通にやります。

が、FW を経由する場合は厄介です。
FWのポートを開けるには、
自社のセキュリティポリシーに
違反していないか、
ネットワーク部門との調整が必要です。

また、FWのポートを開けるにも、
同様の調整が必要になります。

場合によっては、
許可を得るために業務効率が
どれだけ向上するのか見積書を
提出して下さい等と言われるかも
知れません。アピール力が試されます。

昨今では情報セキュリティや、
個人情報保護など、いろいろ情勢が
厳しいため色々大変かも知れませんが、
頑張ってください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/09/25 13:28

    今はまだ学習段階で、表示できればいいといった感じですが、実際業務でポート番号を気にしなくてはいけないとき面倒そうですね。

    キャンセル

0

はい、ODBCを使った接続はごく一般的な方法だと思います。
現在、自分が関わっている結構大手のSIerさんのプロジェクトでも、ごく普通に使用されています。

もっとも、それは内製のツールなので、手軽さから選択されているだけかもしれませんが・・・

ODBCで接続し、ExcelVBAでMySQLのフロントエンドのようなツールを作成して、DBの参照・更新をしています。

製品として世に送り出す場所であればセキュリティ面の考慮も必要になるため、それなりの「製品」(=有償)を使用する場合もあるでしょうが、ODBCでも一通りのDB操作が出来ますし、ドライバーが変更になってもVBAでプログラムする処理の骨格は同じなので、まずはODBCで慣れるのが良いと思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/09/25 10:38

    ご返答ありがとうございます。
    私が貼りましたURLの手法で接続するのが一般的なのですね。

    マクロの記録を取ったのでソースを見てみたのですが、このSQLの記述を変えてやるだけで追記・削除など可能なのでしょうか?

    キャンセル

0

こんにちは。

やりたいことを私が理解できていなかったら申し訳ないですが、
私の解釈が正しければ、できますよ。

ADO経由でクエリを投げてVBAでデータをセットすれば良いです。

http://kawairi.jp/weblog/vita/201207176651

一般論についてはわかりませんが。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/09/25 10:53

    ご返答ありがとうございます。
    貼って頂いたURLを試してみたところうまくいかず。。。

    このようなエラーに。
    http://www.fastpic.jp/viewer.php?file=1464676107.png

    Sub mysql接続()



    'MySQL 接続
    Dim con As New ADODB.Connection
    con.connectionString = "Driver={MySQL ODBC 3.51 Driver};" & _
    "Server=localhost" & _
    "Port=3306" & _
    "Stmt=SET NAMES SJIS;" & _
    "Database=sample_db" & _
    "Uid=root" & _
    "Pwd=root"
    con.Open

    'SQL用意
    Dim sql As String
    sql = "select * from user_tb"

    'レコードセット取得
    Dim rst As ADODB.Recordset
    Set rst = con.Execute(sql)

    'Excelシート上にレコードセットを展開
    Sheets.Add , ActiveSheet ' アクティブシートの後に新規シートを追加
    Range("A1").Value = "Field1" ' 見出しタイトルその1
    Range("A2").Value = "Field2" ' 見出しタイトルその2
    Range("A3").Value = "Field3" ' 見出しタイトルその3
    Range("A4").Value = "Field4" ' 見出しタイトルその4
    Range("A2").CopyFromRecordset rst, 65535 '(貼り付け最大行数)

    '後片付け
    Set rst = Nothing
    con.Close
    Set con = Nothing

    End Sub

    キャンセル

  • 2015/09/25 10:58

    おそらく接続文字列が不正になっています。(セミコロンが無い、とか)

    http://stackoverflow.com/questions/13558921/how-can-vba-connect-to-mysql-database-in-excel

    とか、「ADODB.Connection MySQL」などで検索してみてください。

    キャンセル

  • 2015/09/25 13:26

    ADODB.Connection MySQLで検索したところこのサイトが出てきました。MySQLところこです。ひとまず参照する所まで出来ました。
    次は更新・削除などを出来るようにしていきたいと思います。
    http://qiita.com/shoridevel/items/1b95482938a47c9dcd35

    Sub test()

    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset

    Dim connectionString As String
    Dim sqlStr As String

    Dim rowNo As Integer
    Dim colNo As Integer
    Dim item As Variant

    '接続文字列
    connectionString = "Driver={MySQL ODBC 3.51 DRIVER};" _
    & " SERVER=localhost;" _
    & " DATABASE=sample_db;" _
    & " USER=root;" _
    & " PASSWORD=root;"

    'ADODB.Connection生成
    Set con = New ADODB.Connection

    On Error GoTo Err

    'MySQLに接続
    con.Open connectionString

    'SQL文
    sqlStr = "select * from user_tb"

    'SQL文実行
    Set rs = con.Execute(sqlStr)

    'シートデータクリア
    Worksheets("Sheet1").Cells.Clear

    rowNo = 1
    colNo = 1

    'RecordSetの終了まで
    Do While rs.EOF = False

    'データ抽出
    For Each item In rs.Fields
    Worksheets("Sheet1").Cells(rowNo, colNo).Value = item.Value
    colNo = colNo + 1
    Next
    colNo = 1
    rowNo = rowNo + 1

    '次のレコード
    rs.MoveNext
    Loop

    'クローズ
    con.Close
    Set rs = Nothing
    Set con = Nothing

    Exit Sub

    Err:
    Set rs = Nothing
    Set con = Nothing
    MsgBox (Err.Description)

    End Sub

    キャンセル

0

あるパッケージソフトの宣伝みたいになって申し訳ないですが、ExcelからMySQLにデータを投入する際に
以下のツールのフリー版を使用しています

https://jp.talend.com/products/data-integration

これは、データインテグレーションツールなので、いろいろなデータソース間のデータのやり取りを
細かく設定して、データの挿入・抽出が行えます
基本的なデータのやり取りは、パッケージ内に用意されているアダプタの設定で行えますが、条件による
分岐や細かい変換などは、Javaでプログラムを書くことで対応が可能です
世の中には、こんなものもあるということで、参考にしていただけたらと思います

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/09/25 10:56

    ご返答ありがとうございます。
    このような手法もあるのですね。

    キャンセル

-2

通常、「MySQLクライアントツール」を利用します。

Windows なら A5M2
A5M2

Mac ならsequel pro
sequelpro

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/09/25 10:34

    ご返答ありがとうございます。
    これはどういったものでしょうか?
    環境はwindowsです。
    vbaに記述してなんとかしてつなぐという手法ではなく、ソフトのインストールが必要ということでしょうか?

    キャンセル

  • 2015/09/25 10:36 編集

    ソフトウェアです。インストールして使うものですが、PhpMyAdminで行うようなことをそのままできます。

    サーバー上のデータを作成したり、追記したりすることが目的なら、わざわざODBCなどで設定してゴニュゴニュするのは手間なだけです。

    キャンセル

  • 2015/09/25 22:03

    myadminは使ったことあるのでイメージ出来ました!

    キャンセル

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

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

関連した質問

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