Access にクエリを実行し、データを Excel (2003) に入力するために、このコードをオンラインで見つけましたが、本来よりもはるかに遅いです。
Sub DataPull(SQLQuery, CellPaste)
Dim Con As New ADODB.Connection
Dim RST As New ADODB.Recordset
Dim DBlocation As String, DBName As String
Dim ContractingQuery As String
If SQLQuery = "" Then
Else
DBName = Range("DBName")
If Right(DBName, 4) <> ".mdb" Then DBName = DBName + ".mdb"
DBlocation = ActiveWorkbook.Path
If Right(DBlocation, 1) <> "\" Then DBlocation = DBlocation + "\"
Con.ConnectionString = DBlocation + DBName
Con.Provider = "Microsoft.Jet.OLEDB.4.0"
Con.Open
Set RST = Con.Execute(SQLQuery)
Range(CellPaste).CopyFromRecordset RST
Con.Close
End If
End Sub
問題は、このコードが非常に長くかかることです。Access を開いてそこでクエリを実行すると、約 1/10 の時間がかかります。これをスピードアップする方法はありますか?または、これに時間がかかる理由は何ですか? 私のすべてのクエリは、単純な where ステートメントと結合のない単純な選択クエリです。クエリでさえ、select * from [test]
必要以上に時間がかかります。
編集:私はその行を指定する必要があります
Range(CellPaste).CopyFromRecordset RST
時間がかかった方です。