Outlook 2010 から EXCELや、CSV への出力は、ファイルへのエクスポートで簡単にできるが、直接SQLに入れたい場合。
[Outlook のオプション]で、[開発]タブは規定値でオフになっているので、ここにチェックを入れる。
すると[開発]タブが表示される。
[マクロ]ボタンを押し、[マクロ]ダイアログより、たとえばOutlookToSqlマクロを作成する。
すると、Visual Basic のエディタが開く。[ツール]→[参照設定]を選択する。
[参照設定]より、”Microsoft ActiveX Data Objects 6.0 Library”を選択する。バージョンは環境によって異なるので最新のもので試してみればよいと思う。
SQL Server では、たとえばこんなテーブルを作っておく。
そして、次のマクロを実行する。
Sub OutlookToSql()
Dim myOlapp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim 送信日時 As Date
Dim 受信日時 As Date
Dim 件名 As String
Dim 内容 As String
Set myNameSpace = myOlapp.GetNamespace(“MAPI”)
Set myFolder = myNameSpace.Folders.Item(“Outlook”).Folders(“受信トレイ”)
Dim adoCon As New ADODB.Connection
adoCon.Open “Driver={SQL Server};” & _
“server=192.168.11.9; database=test;Trusted_Connection=yes”
Dim cmd As String
With myFolder
For i = 1 To .Items.Count
件名 = .Items(i).Subject
件名 = Replace(件名, “‘”, “””)
送信日時 = .Items(i).SentOn
受信日時 = .Items(i).ReceivedTime
内容 = .Items(i).Body
内容 = Replace(内容, “‘”, “””)
cmd = “insert into Mail(Subject, SentOn, Received, Body) values (” & _
“‘” & 件名 & “‘,” & _
“‘” & 送信日時 & “‘,” & _
“‘” & 受信日時 & “‘,” & _
“‘” & 内容 & “‘” & _
“)”
adoCon.Execute cmd
Next i
End With
adoCon.Close
MsgBox “Done”
End Sub
結果はこんな感じ。
VBA でSQLのコマンドを文字列で生成しているので、SQL Injection 対策が必要なので注意。