Frage

Ich versuche, Daten aus der Zwischenablage aus Excel (das heißt durch Tabulatoren getrennte Text) und analysieren sie in eine von mehreren Wörterbüchern kopiert zu nehmen. Die Idee ist, dass jede Reihe wird von einem Wörterbuch dargestellt werden, die auf Zellenwerte aus Header abbildet. Die erste Zeile in den kopierten Daten die Header enthalten.

Immer den Text aus der Zwischenablage ist einfach genug:

Dim dataObj As DataObject
Dim clipString As String
Set dataObj = New DataObject
dataObj.GetFromClipboard
clipString = dataObj.GetText

Dann teile ich die Eingabe in Reihen:

Dim strRows As Variant

strRows = Split(clipString, vbNewLine)

Als nächstes versuche ich die Header zu extrahieren:

Dim headers As New Collection
Dim strCols As Variant
strCols = Split(strRows(0), vbTab)

For col = LBound(strCols) To UBound(strCols) - 1
    headers.Add strCols(col)
Next

Schließlich extrahieren ich die Zeilen:

Dim cells
Dim rows As New Collection

For i = 1 To UBound(strRows) - 1
    strCols = Split(strRows(0), vbTab)
    Set cells = CreateObject("Scripting.Dictionary")
    For col = 0 To UBound(strCols) - 1
        cells.Add headers.Item(col + 1), strCols(col)
    Next
    rows.Add cells
Next

Allerdings erhalte ich einen Fehler. Auf der Linie

headers.Add strCols(col), col

Der Zugang kommt zurück mit Laufzeitfehler ‚12‘:. Typenkonflikt

Aktualisieren das Problem behoben oben, vielen Dank für die Anregungen. Jetzt bin ich einen Fehler auf der Linie bekommen

Set cells = CreateObject(Scripting.Dictionary)

424:. Objekt erforderlich

Für Hinweise, was ich bin Diong falsch -. VBA ist nicht wirklich meine Stärke

Update 2 festgelegt dieses Problem zu (danke für Vorschlag unten). Der Code funktioniert jetzt.

War es hilfreich?

Lösung

Für Ihr zweites Problem - müssen Sie den Zeichenfolge Namen der Zielklasse bieten, so ist es eigentlich

Set cells = CreateObject("Scripting.Dictionary")

Andere Tipps

Ich denke, col hat String-Typ sein.

headers.Add strCols(col), cstr(col)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top