Ich exportiere Daten von Excel nach Access. Die Daten in Excel enthalten Formeln, die Zellen mit Leerzeichen bei if-Funktion belassen: =IF(SISESTUS!B18="";"";SISESTUS!C18
.Typenkonfliktfehler bei Vba mit leeren Zellen, die Formeln enthalten
Problem ist: VBA ist nicht in der Lage leere Zellen mit Formeln zu lesen. Dies führt zu einem Typenkonfliktfehler. Wenn ich nur Werte kopiere dann ist ok, mein Exportmakro läuft einwandfrei.
Code:
Sub Export_Data()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim dbPath
Dim x As Long, i As Long
Dim nextrow As Long
On Error GoTo errHandler:
dbPath = ActiveSheet.Range("S3").Value
nextrow = Cells(Rows.Count, 1).End(xlUp).row
Set cnn = New ADODB.Connection
If Sheet8.Range("A2").Value = "" Then
MsgBox " Lisa kirjed tellimusse, midagi pole arhiveerida"
Exit Sub
End If
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
Set rst = New ADODB.Recordset
rst.Open Source:="Tellimused", ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Options:=adCmdTable
For x = 2 To nextrow
rst.AddNew
For i = 1 To 16
rst(Cells(1, i).Value) = Cells(x, i).Value
Next i
rst.Update
Next x
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
MsgBox " Tellimus on edukalt arhiiveeritud"
Application.ScreenUpdating = True
Sheet8.Range("R3").Value = Sheet8.Range("T3").Value + 1
Sheet8.Range("A2:P250").ClearContents
On Error GoTo 0
Exit Sub
errHandler:
Set rst = Nothing
Set cnn = Nothing
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Export_Data"
End Sub
Ich denke, nach diesen Zeilen Code, Makro beendet und eine Fehlermeldung geben. Für Klarheit.
For x = 2 To nextrow
rst.AddNew
For i = 1 To 16
rst(Cells(1, i).Value) = Cells(x, i).Value
Next i
rst.Update
Next x
Auf welcher Leitung scheitert das genau? – jkpieterse
Ihre Frage konkurriert mit allen anderen um die Aufmerksamkeit. Wenn Sie uns dies leichter verständlich machen können, erhalten Sie eher eine funktionierende Antwort. Große Codeblöcke können Menschen abschrecken, da sie Zeit und Mühe brauchen, um sie zu verstehen. Kannst du diesen Code durch einen MCVE ersetzen (Minimal, Complete und Verifizierbar - siehe die [Hilfeseiten] (http://Stackoverflow.com/help/mcve), um Tipps dazu zu erhalten)? –
Für x = 2 bis rst.AddNew Für i = 1 bis 16 rst (Zellen (1, i) .Wert) = Cells (x, i) .Wert Next i rst.Update Next x nextrow –