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

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

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

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

MySQL

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

Q&A

解決済

1回答

2178閲覧

VBAでMySQLに接続して、エクセルファイルのシートにデータを抽出したい

shogakusha

総合スコア12

VBA

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

MySQL

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

0グッド

0クリップ

投稿2020/06/30 00:47

前提・実現したいこと

VBAでMySQLに接続して、エクセルファイルのシートにデータを取得したいのですが、
エラーが出てしまい、解決方法がわかりません。
アドバイスをいただけませんでしょうか。

現状としては、
・MySQLに接続は出来ました
・テーブル作成、データ登録は出来ました
・DBからデータを取得して【mysql_odbc】シートに表示させることが出来ません
※実行した際に「CommandオブジェクトのCommandText設定されていません」とエラーが表示され、解決できません。

どうぞ、よろしくお願いいたします。

発生している問題・エラーメッセージ

実行時エラー '-2147217908(80040e0c)'; CommandオブジェクトのCommandText設定されていません。

該当のソースコード

VBA

1 2Option Explicit 3 4Sub db() 5 6 Const MYDRIVER = "Driver={MySQL ODBC 5.3 Unicode Driver};" 'ドライバー 7 Const MYSERVER = "Server=localhost;" 'サーバー 8 Const MYPORT = "Port=3306;" 'ポート 9 Const MYDATABASE = "Database=*****;" 'データベース名 10 Const MYCCODE = "STMT=SET NAMES sjis;" '文字コード(Excel側) 11 Const MYUSER = "UID=root;" 'ユーザー名 12 Const MYPASS = "PWD=******;" 'パスワード 13 14 Dim cn As New ADODB.Connection 15 Dim rs As New ADODB.Recordset 16 Dim constr As String 17 Dim strSQL As String 18 Dim i As Long 19 Dim j As Long 20 Dim CMD As ADODB.Command 21 22 constr = MYDRIVER & MYSERVER & MYPORT & MYDATABASE & MYCCODE & MYUSER & MYPASS 23 24 cn.ConnectionString = constr 25 cn.Open 26 27 テーブル作成 28 strSQL = "Create Table 西暦和暦(" & _ 29 "始期 nchar(8)," & _ 30 "元号 nchar(5));" 31 rs.Source = strSQL 32 rs.ActiveConnection = cn 33 'Set rs = New ADODB.Command 34 'rs.CommandText = "SELECT * FROM 西暦和暦;" 35 rs.Open 36 37 'データ追加 38 strSQL = "insert into 西暦和暦 values " & _ 39 "('20190501', '令和'), " & _ 40 "('19890108', '平成'), " & _ 41 "('19261225', '昭和'), " & _ 42 "('19120730', '大正'), " & _ 43 "('18680908', '明治');" 44 rs.Source = strSQL 45 rs.Open 46 47 'データ表示 48 With Worksheets("mysql_odbc") 49 .Cells.Clear 50 i = 1 51 Do Until rs.EOF 52 For j = 0 To rs.Fields.Count - 1 53 If i = 1 Then .Cells(i, j + 1) = rs.Fields(j).Name 54 .Cells(i + 1, j + 1) = rs(j).Value 55 .Cells(i + 1, j + 1).Errors(xlNumberAsText).Ignore = True 56 Next j 57 rs.MoveNext 58 i = i + 1 59 Loop 60 End With 61 62 rs.Close 63 Set rs = Nothing 64 cn.Close 65 Set cn = Nothing 66 67End Sub 68

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

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

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

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

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

guest

回答1

0

ベストアンサー

'データ表示
With Worksheets("mysql_odbc")
この前に下記を追加してみて下さい。

strSQL = "SELECT * FROM 西暦和暦;" rs.Open strSQL, cn, adOpenDynamic, adLockOptimistic

投稿2020/06/30 02:25

tosi

総合スコア553

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

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

shogakusha

2020/06/30 02:42

ありがとうございます。 エラー解消されました。 なぜエラー解消されたかはわからないので、調べてみます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問