Analysieren Tab-Getrennte Werte in VBA
Ich versuche zu nehmen Zwischenablage kopierten Daten aus excel (D. H. Tabulatoren getrennte Texte) und analysieren Sie diese in eine Sammlung von Wörterbüchern. Die Idee ist, dass jede Zeile wird durch ein Dictionary dargestellt, welche Karten aus Kopf-zu-Zelle-Werte. Die erste Zeile in der kopierten Daten enthalten die Kopfzeilen.
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 aufgeteilt ich die Eingabe in Zeilen:
Dim strRows As Variant
strRows = Split(clipString, vbNewLine)
Nächsten versuche ich zu extrahieren der Header:
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 extrahiere 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
Aber ich erhalte eine Fehlermeldung. Auf der Linie
headers.Add strCols(col), col
Zugriff kommt wieder mit der Run-time error '12': type mismatch.
Update problem behoben, durch das vor, danke für die Vorschläge. Jetzt bin ich immer einen Fehler auf der Linie
Set cells = CreateObject(Scripting.Dictionary)
424: Objekt erforderlich.
Irgendwelche Tipps, was ich bin diong falsch - VBA ist nicht wirklich meine Stärke.
Update 2 das Problem behoben (vielen Dank für die Anregung unten). Der code funktioniert jetzt.
InformationsquelleAutor |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre zweite problem-Sie benötigen den string-Namen des Ziel-Klasse, also ist es eigentlich
InformationsquelleAutor Joel Goodwin
Ich denke, col werden string-Typ.
headers.Add strCols(col), cstr(col)
InformationsquelleAutor ozczecho