Parse 탭 VBA의 값을 분리했습니다
-
06-07-2019 - |
문제
Excel에서 복사 한 클립 보드 데이터를 가져 와서 사전 모음으로 구문 분석하려고합니다. 아이디어는 각 행이 헤더에서 셀 값으로 매핑되는 사전으로 표시됩니다. 복사 된 데이터의 첫 번째 행에는 헤더가 포함됩니다.
클립 보드에서 텍스트를 얻는 것만으로는 쉽습니다.
Dim dataObj As DataObject
Dim clipString As String
Set dataObj = New DataObject
dataObj.GetFromClipboard
clipString = dataObj.GetText
그런 다음 입력을 행으로 나눕니다.
Dim strRows As Variant
strRows = Split(clipString, vbNewLine)
다음으로 헤더를 추출하려고합니다.
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
마지막으로 행을 추출합니다.
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
그러나 오류가 발생합니다. 라인에
headers.Add strCols(col), col
액세스는 런타임 오류 '12': 유형 불일치로 돌아옵니다.
업데이트 위의 문제를 해결했습니다. 제안 해주셔서 감사합니다. 이제 라인에서 오류가 발생합니다
Set cells = CreateObject(Scripting.Dictionary)
424 : 객체가 필요합니다.
내가 틀린 것에 대한 힌트 - VBA는 실제로 내 장점이 아닙니다.
업데이트 2 이 문제도 수정했습니다 (아래 제안에 감사드립니다). 이제 코드가 작동합니다.
해결책
두 번째 문제의 경우 - 대상 클래스의 문자열 이름을 제공해야하므로 실제로
Set cells = CreateObject("Scripting.Dictionary")
다른 팁
Col은 문자열 유형이어야한다고 생각합니다.
headers.Add strCols(col), cstr(col)
제휴하지 않습니다 StackOverflow