Excel VBAからAWS Auroraに接続する


Excelは全能にして絶対。
事務作業からプログラムまで、どんな層にでも広く活用されているのが全能伸Excel様なのだ。

先日、個別に管理されたファイルを結合しているとかいう崇高な仕事をしている人がいたので、
データベースに連携させるように提案したのですが、実際にやったことなかったのでやってみました。
ということで、今回はExcelをつかってAWSのAurora(MySQL)接続をやってみます。

Auroraを立てる

Auroraを立てていきましょう。
ポイントは2点。

①セキュリティグループでポートを開ける(3306)

②パブリックアクセス可能にチェックを入れる。

Aurora構築時にデータベースも作成しておきましょう。
ここでは「mydb」という名前でデータベースを立てることにします。

これでAuroraの環境が整いました。

MySQLドライバをインストール

以下のサイトからODBCドライバ(MySQL Connectors)をWindowsPCにインストールしましょう。

VBAを書く

テーブルを作成して、サンプルデータをインサートして、結果をSELECTするサンプルコードです。

 Sub main()

 Dim adoCon As Object ' ADOコネクション
 Dim adoRs As Object  ' ADOレコードセット
 Dim CreateTableSQL As String    ' SQL
 Dim InsertSQL As String    ' SQL
 Dim SelectSQL As String    ' SQL
 CreateTableSQL = "create table tmp_tbl(id int,name nvarchar(255))"
 SelectSQL = "select * from tmp_tbl"

  ' ADOコネクションを作成
  Set adoCon = CreateObject("ADODB.Connection")

  ' ODBC接続
  adoCon.Open _
      "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _
      " SERVER=****aurora-instance-1.cfu9dcigfnzc.ap-northeast-1.rds.amazonaws.com;" & _
      " DATABASE=mydb;" & _
      " UID=admin;" & _
      " PWD=*****;"

  'CreateTable 既にテーブルあればエラーを無視
  On Error Resume Next
    adoCon.Execute (CreateTableSQL)
  On Error GoTo 0

  'サンプルデータをインサート
  For i = 1 To 10
    int_rnd = Round(Rnd * 10000, 0)
    InsertSQL = "insert into tmp_tbl(id,name) values(" & int_rnd & " ,'apple_" & int_rnd & "')"
    adoCon.Execute (InsertSQL)
  Next

  ' SELECTの実行
  Set adoRs = adoCon.Execute(SelectSQL)
    Do Until adoRs.EOF
      Debug.Print adoRs.Fields(0) & ":" & adoRs.Fields(1)
    adoRs.MoveNext
  Loop

End Sub

注意事項

データベースをインターネットにさらすことになるので、
セキュリティグループなどで適切にアクセスは制御します。
もし商用で行う場合はVPN-Gatewayを使うなどが安全です。

それではご査収ください~(^-^)