Excelのアクティブなワークシートから直接SQLServerデータベースにデータをインポートする最速の方法は何ですか?
行と列をループし、SQL文字列を生成し、ADODB.Connectionを開いて、SQLを実行するだけで大成功を収めました。ただし、そのソリューションは、大規模なデータセットには遅すぎます。
だから私はADOでJetプロバイダーをテストしています。間違いなく高速ですが、ブックを保存する必要があり、アップロードする前にユーザーにブックを保存するように要求することはできません。
次のコードは、ブックが保存されている場合は機能しますが、ActiveWorkbookが保存されていない場合、ActiveWorkbook.Pathはnull文字列を返し、コードは失敗します。
Sub UploadViaJet()
Dim objADO As New ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set objADO = New ADODB.Connection
objADO.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ActiveWorkbook.Path & _
"\" & ActiveWorkbook.Name & ";" & _
"Extended Properties=Excel 8.0"
strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
"Server=<server>;Database=<database>;" & _
"UID=<UID>;PWD=<PWD>].test_table " & _
"FROM [" & ActiveSheet.Name & "$]"
objADO.Execute strSQL, lngRecsAff, adExecuteNoRecords
End Sub
これを行うためのより簡単で高速な方法はありますか?