前提・実現したいこと
下記のようなテーブルがExcelのシートにあるとして、このテーブルの内容を
MySQLに反映させるプログラムを作成したいと思っています。
発生している問題・エラーメッセージ
ネットで探してみて、これをRecordsetを用いて別のシートに反映させるプログラムはあったのですが、
mysqlに直接反映させる方法が分かりませんでした。
pythonでやるのであれば、pandasに取り込んで、to_sqlなどすれば解決すると思うのですが、
VBAは不慣れで方法が分かりませんでした。(今回のプログラムはVBAで記載する必要があります)
お手数をおかけいたしますが、ご教示いただくことは可能でしょうか。
該当のソースコード
VBA
1Sub test_register_to_db() 2 Dim cn_excel As ADODB.Connection 3 Dim rs_excel As ADODB.Recordset 4 Call DB_Connect 'mysqlのDBに接続(connectionはcn) 5 6 Set cn_excel = CreateObject("ADODB.Connection") 7 Set rs_excel = CreateObject("ADODB.Recordset") 8 cn_excel.Provider = "Microsoft.ACE.OLEDB.12.0" 9 '1行目がヘッダの場合はHDR=YESにする。NOの場合はF1,F2,F3・・・と番号が振られる。 10 11 cn_excel.Properties("Extended Properties") = "Excel 12.0;HDR=NO;IMEX=1" 12 13 cn_excel.Open ThisWorkbook.FullName '自ワークブックのファイル名を指定しているが、 14 'もちろん別ワークブックでもOK! 15 16 strSQL = "" 17 strSQL = strSQL & " SELECT * " 18 strSQL = strSQL & " FROM [db登録$B2:F10] " 'Sheet2のA3:Z100にデータがあると仮定する。 19 rs_excel.Open strSQL, cn_excel, adOpenKeyset, adLockReadOnly 20 21 22 ThisWorkbook.Worksheets("コピー先").Cells(10, 3).CopyFromRecordset rs_excel 'シート1のセル(10,3)からデータをセットする 23 24 rs_excel.Close 25 Set rs_excel = Nothing 26 cn_excel.Close 27 Set cn_excel = Nothing 28 29End Sub
試したこと
ネットでサンプルコードを探し、これを改造してみた。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/01 21:35
退会済みユーザー
2020/05/01 22:04
退会済みユーザー
2020/05/01 22:23 編集