Hallo allerseits!
ich möchte gerne ein Makro erstellen, mit dem man per Knopfdruck das aktuelle Registerblatt in den SQL Server exportiert.
Das hat eigentlich auch schon sehr gut funktioniert, leider hat sich jetzt bei einer Excelauswertung mit ca. 70.000 Zeilen das Problem ergeben, dass nur 4497 Zeilen in die neue Tabelle auf dem Server importiert werden. Ich habe versucht, die Daten in ein neues Registerblatt als Wert neu einzufügen und nur einzelne Spalten zu exportieren, aber immer das selbe Ergebnis. Wenn ich Zeilen im Umkreis von Zeile 4500 lösche, werden auch immer ca. 4500 Zeilen eingefügt, die Zahlt unterscheidet sich dann aber immer ein bisschen.
Ich habe außerdem versucht, die Spalten mit 1 zu multiplizieren, danach werden über 65.000 Zeilen eingefügt,aber auch nicht alle. Scheinbar gibt es irgendein Problem mit dem Datenformat, aber welches? Egal ob nur Text oder nur Zahlen in den Spalten, immer dasselbe Problem.
Bei anderen Excel-Auswertungen mit noch mehr Zeilen funktioniert alles einwandfrei, ich bin absolut ratos.
Mein Makro baut prinzipiell auf folgendem Code auf (von https://support.microsoft.com/en-us/kb/321686):
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\test\xltestt.xls;" & _
"Extended Properties=Excel 8.0"
'Import by using Jet Provider.
strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
"Server=<server>;Database=<database>;" & _
"UID=<user>;PWD=<password>].XLImport9 " & _
"FROM [Customers$]"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
cn.Close
Set cn = Nothing
Openrowset und Opendataset sind aus Sicherheitsgründen keine Option.
Kann mir jemand weiterhelfen oder alternative Vorgehensweisen vorschlagen?
Vielen Dank!!
|