Hallo zusammen,
ich habe folgenden Code in VBA erstellt:
Jetzt möchte ich diesen Code in VB einfügen und ausführen können, VB greift dazu auf ein Excel Blatt zurück, was auch ohne Probleme funktioniert.
Ich bekomme immer in der Zeile:
Eine Fehlermeldung:
Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in Intrastat.exe aufgetreten.
Zusätzliche Informationen: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Klassentyp "System.Array" umgewandelt werden. Instanzen von Typen, die COM-Komponenten repräsentieren, können nicht in andere Typen umgewandelt werden, die keine COM-Komponenten repräsentieren. Eine Umwandlung in Schnittstellen ist jedoch möglich, sofern die zugrunde liegende COM-Komponente QueryInterface-Aufrufe für die IID der Schnittstelle unterstützt.
Kann mir hierbei jemand helfen?
Gruß
Nils,
ich habe folgenden Code in VBA erstellt:
Quellcode
- Dim objDic As Object
- Dim vntTmp As Object
- Dim vntOut
- Dim vntErg
- Dim j As Integer
- Dim k As Integer
- Dim dE#, dM#, dQ#, dV#
- objDic = CreateObject("Scripting.Dictionary")
- vntTmp = xlWorkSheetNew.Range("A1:O" & LZeile)
- ReDim Preserve vntTmp(1 To UBound(vntTmp, 1), 1 To UBound(vntTmp, 2) + 1)
- Stop
- i = LBound(vntTmp, 1) 'test
- Dim ii = UBound(vntTmp, 1) 'test
- ' im Dictionary Unikate aus Zusammengefassten Spalten als key und die Zeilennr als Item sammeln
- For i = LBound(vntTmp, 1) To UBound(vntTmp, 1)
- vntTmp(i, 16) = vntTmp(i, 3) & "#" & vntTmp(i, 6)
- If objDic.Contains(vntTmp(i, 16)) Then
- objDic(vntTmp(i, 16)) = objDic(vntTmp(i, 16)) & "," & i
- Else
- objDic.Add(vntTmp(i, 16), i)
- End If
- Next
- ReDim vntErg(0 To objDic.Count, 0 To 15)
- vntOut = objDic.Items
- For i = 1 To UBound(vntOut)
- For j = 0 To UBound(Split(vntOut(i), ","))
- dE = dE + vntTmp(Split(vntOut(i), ",")(j), 15) 'Betrag
- dM = dM + vntTmp(Split(vntOut(i), ",")(j), 10) 'Gewicht
- dQ = dQ + vntTmp(Split(vntOut(i), ",")(j), 8) 'Menge
- dV = dV + vntTmp(Split(vntOut(i), ",")(j), 14) 'Fracht
- Next
- For k = 0 To 15
- vntErg(0, k) = vntTmp(1, k + 1)
- vntErg(i, k) = vntTmp(Split(vntOut(i), ",")(0), k + 1)
- vntErg(i, 14) = dE
- vntErg(i, 9) = dM
- vntErg(i, 7) = dQ
- vntErg(i, 13) = dV
- Next
- dE = 0
- dM = 0
- dQ = 0
- dV = 0
- Next
- xlWorkSheetZusammengefasst.Cells(1, 1).Resize(UBound(vntErg, 1), UBound(vntErg, 2)) = vntErg
Jetzt möchte ich diesen Code in VB einfügen und ausführen können, VB greift dazu auf ein Excel Blatt zurück, was auch ohne Probleme funktioniert.
Ich bekomme immer in der Zeile:
Eine Fehlermeldung:
Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in Intrastat.exe aufgetreten.
Zusätzliche Informationen: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Klassentyp "System.Array" umgewandelt werden. Instanzen von Typen, die COM-Komponenten repräsentieren, können nicht in andere Typen umgewandelt werden, die keine COM-Komponenten repräsentieren. Eine Umwandlung in Schnittstellen ist jedoch möglich, sofern die zugrunde liegende COM-Komponente QueryInterface-Aufrufe für die IID der Schnittstelle unterstützt.
Kann mir hierbei jemand helfen?
Gruß
Nils,