2017-04-26 9 views
0

このコードは大規模データでも機能しますか? このコードは小さなデータの罰金に動作しますが、大規模なデータのために、それがオートメーションエラーを与え、わずか数行は、データベースExcelサーバからSQLサーバに大量のデータをインポートしようとしていますが、 "AUTOMATION ERROR"として与えています

Sub insertion() 
Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim sConnString As String 
Dim rsstring As String 
Dim m, nrows As Integer 
Dim wb1 As Excel.Workbook 
Set wb1 = Workbooks.Open("D:\MPN-Materials.xlsx") 
wb1.Sheets("sheet1").Activate 
sConnString = "Provider=SQLOLEDB;Data Source=PRATEEP-PC\SQLEXPRESS;" & _ 
       "Initial Catalog=MDM;" & _ 
       "Integrated Security=SSPI;" 
Set conn = New ADODB.Connection 
Set rs = New ADODB.Recordset 
conn.Open sConnString 
    Dim loRH As Excel.ListObject 
    Set loRH = wb1.Sheets("MPN Materials").ListObjects(1) 
    loRH.Parent.Activate 
    loRH.ListColumns(1).DataBodyRange.Select 
    nrows = WorksheetFunction.CountA(Selection) 
For m = 0 To nrows - 1 
rsstring = "insert into MPN_Materials (MPN_Material, Material_Desc, 
Int_Material_No, MPN, Manufacture_ID, Material_Grp, Material_Type, 
    Last_Change, UoM) values" _ 
     & "('" & loRH.DataBodyRange.Cells(m + 1, 1) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 2) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 3) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 4) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 5) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 6) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 7) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 8) & "', " _ 
     & "'" & loRH.DataBodyRange.Cells(m + 1, 9) & "'); " 
    Set rs = New ADODB.Recordset 
    Set rs = conn.Execute(rsstring) 

答えて

0

にロード得ている私は、一般に、アクセスにExcelからデータを取得するために.TransferSpreadsheetを使用しています。 Hereをご覧ください。

また、アクセスのインポート機能を使用して、その方法でインポート仕様を生成し、後で再度使用することもできます。

関連する問題