문제

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)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top