Excel에서 복사 한 클립 보드 데이터 (예 : 탭으로 구분 된 텍스트)를 가져와 사전 컬렉션으로 구문 분석하려고합니다. 아이디어는 각 행이 머리글에서 셀 값으로 매핑되는 사전으로 표시된다는 것입니다. 복사 된 데이터의 첫 번째 행에는 헤더가 포함됩니다.VBA에서 파스 탭으로 구분 된 값
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 strRows As Variant
strRows = Split(clipString, vbNewLine)
다음 : I 행에 입력을 분할 그런
Dim dataObj As DataObject
Dim clipString As String
Set dataObj = New DataObject
dataObj.GetFromClipboard
clipString = dataObj.GetText
: 클립 보드의 텍스트를 얻기
쉽게 충분하다
마지막으로 행을 추출합니다.
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이 문제도 해결되었습니다 (아래 제안 주셔서 감사합니다). 이제 코드가 작동합니다.
감사합니다. 그 링크의 마지막 링크입니다. 일반적인 MSFT 문서는 잘못되었습니다 (직접 복사하여 붙여 넣기했습니다). – jwoolard