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

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

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

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

MySQL

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

Q&A

解決済

5回答

13788閲覧

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

nissanngtr34

総合スコア24

VBA

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

MySQL

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

0グッド

0クリップ

投稿2015/09/25 01:18

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

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

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

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

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

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

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

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

guest

回答5

0

ベストアンサー

普通にやります。

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

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

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

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

投稿2015/09/25 03:22

umeaji

総合スコア101

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

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

nissanngtr34

2015/09/25 04:28

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

0

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

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

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

投稿2015/09/25 01:44

編集2015/09/25 01:49
KatsumiTanaka

総合スコア924

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

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

nissanngtr34

2015/09/25 01:56

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

0

こんにちは。

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

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

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

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

投稿2015/09/25 01:34

Tak1wa

総合スコア4791

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

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

nissanngtr34

2015/09/25 01: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
nissanngtr34

2015/09/25 04: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
guest

0

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

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

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

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

投稿2015/09/25 01:33

編集2015/09/25 01:47
pi-chan

総合スコア5936

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

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

nissanngtr34

2015/09/25 01:38

ご返答ありがとうございます。 私が貼りましたURLの手法で接続するのが一般的なのですね。 マクロの記録を取ったのでソースを見てみたのですが、このSQLの記述を変えてやるだけで追記・削除など可能なのでしょうか?
guest

0

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

Windows なら A5M2
A5M2

Mac ならsequel pro
sequelpro

投稿2015/09/25 01:30

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nissanngtr34

2015/09/25 01:34

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

退会済みユーザー

2015/09/25 01:40 編集

ソフトウェアです。インストールして使うものですが、PhpMyAdminで行うようなことをそのままできます。 サーバー上のデータを作成したり、追記したりすることが目的なら、わざわざODBCなどで設定してゴニュゴニュするのは手間なだけです。
nissanngtr34

2015/09/25 13:03

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問