vba를 사용하여 피큐어에서와 같이 데이터 테이블을 읽어야합니다. 난 Msg.Body 본문을 읽을 수 있지만 실제로 나는 헤더로 첫 번째 행을 발견하고 데이터 필드 및 나머지 DBMS 테이블을 업데이 트해야합니다. 그래서 내가 Excel에서 것이라고 테이블을 읽을 수 있습니까? vba를 사용하여 Outlook 메시지 본문에 붙여 넣은 표를 읽는 방법은 무엇입니까?
4
A
답변
6
이 샘플 절차는 도움이됩니다. Excel에서 테이블을 다시 만들고 Outlook 전자 메일에 붙여 넣은 다음 나에게 보냈습니다. 그런 다음이 절차를 사용하여 "셀"값을 읽습니다.
Sub GetLines()
Dim msg As Outlook.mailItem
Dim rows As Variant
Dim numberofColumns As Long
Dim numberofRows As Long
Dim headerValues As Variant
Dim headerRow() As String
Dim data() As String
Dim i As Long, j As Long
' get currently selected email
Set msg = ActiveExplorer.Selection.item(1)
' tokenize each line of the email
rows = Split(msg.Body, vbCrLf)
' calculate array size
numberofColumns = Len(rows(0)) - Len(Replace(rows(0), Chr(9), ""))
numberofRows = UBound(rows) + 1
' put header row into array
ReDim headerRow(1 To numberofColumns)
headerValues = Split(rows(0), Chr(9))
For i = 1 To numberofColumns
headerRow(i) = Trim$(headerValues(i - 1))
Next i
' calculate data array size
numberofRows = numberofRows - 1
' put data into array
ReDim data(1 To numberofRows, 1 To numberofColumns)
For i = 1 To numberofRows
For j = 1 To numberofColumns
data(i, j) = Trim$(Split(rows(i), Chr(9))(j - 1))
Next j
Next i
End Sub
먼저 전자 메일의 각 줄을 배열로 토큰 화합니다. 배열 크기를 계산 한 다음 테이블의 첫 번째 행 ("머리글") 만 포함 할 배열을 만듭니다.
그런 다음 헤더 행을 건너 뛰므로 행 수에서 하나를 뺍니다. 그런 다음 각 행을 반복하여 분할하고 값을 반복하여 2D 배열에 할당합니다.
결국 "headerRow"변수를 반복하여 DBMS에 사용할 필드 값을 검색 할 수 있습니다. 변수 "data"는 각 필드에 해당하는 값만 포함합니다. 따라서 headerRow (1) 및 data (n, 1)은 테이블의 첫 번째 열에있는 값과 일치해야합니다.
+1
+1 멋지게 완료되었습니다. – brettdj
관련 문제
- 1. VBA를 사용하여 각 행의 위치를 읽는 방법은 무엇입니까?
- 2. 붙여 넣은 텍스트에서 ¶ (pilcrow) 제거
- 3. CodeMirror2 : 붙여 넣은 내용의 서식을 지정하는 방법은 무엇입니까?
- 4. 다음과 같이 홀수로 붙여 넣은 문자를 제거하는 방법은 무엇입니까?
- 5. Outlook VBA를 사용하여 숨은 참조 수신자 추가
- 6. 서식있는 Excel 범위를 Outlook 메시지에 붙여 넣기
- 7. PHP와 MySQL에서 Word에서 붙여 넣은 문자를 변환합니다.
- 8. = Gmail 메시지 본문에 로그인하십시오.
- 9. 붙여 넣은 텍스트를 선택하는 vim 명령이 있습니까?
- 10. 붙여 넣은 텍스트를 한 줄로 변환
- 11. ACCESS VBA를 사용하여 mpp 파일을 읽는 방법
- 12. 웹 페이지에서 복사하여 붙여 넣은 목록을 구분하는 RegEx는 무엇입니까?
- 13. 붙여 넣은 토큰을 매크로로 대문자화할 수 있습니까?
- 14. 함수 내에서 "붙여 넣은"이름 사용
- 15. MS Word에서 붙여 넣은 내용 정리하기
- 16. 붙여 넣은 Illustrator 에셋으로 Flash CS4 크롤링
- 17. Word에서 붙여 넣은 문자열의 HTML 인코딩
- 18. Eclipse에서 붙여 넣은 코드를 컴파일하지 못했습니다.
- 19. 두 파일을 붙여 넣은 후 화질을 낮추십시오.
- 20. git을 사용하여 복사 및 붙여 넣은 코드를 검색하려면 어떻게해야합니까?
- 21. TSQL에서 복사/붙여 넣은 코드를 검색하는 도구는 무엇입니까?
- 22. Java JTextArea가 붙여 넣은 텍스트 전체를받지 못하는 이유는 무엇입니까?
- 23. VBA를 사용하여 텍스트를 선택하고 굵게 표시
- 24. Emacs에 붙여 넣은 코드의 줄이기 방법 StackOverflow From
- 25. Outlook Addin - 리소스에서 본문에 이미지 첨부
- 26. Outlook Script 본문에 텍스트가 있는지 확인하려면
- 27. VBA를 사용하여 Powerpoint에서 모양을 정의하는 방법은 무엇입니까?
- 28. 동적 표를 만드는 방법은 무엇입니까?
- 29. Outlook 메시지 본문을 Excel로 내보내기
- 30. vb.net을 사용하여 첨부 파일이있는 Outlook 메시지 만들기
메일 본문 형식이란 무엇입니까? HTML, 서식있는 텍스트? Word/Excel에서 붙여 넣은 테이블의 원본은 무엇입니까? –
분할 (Msg.Body, vbCrLf)을 사용하여 이메일 본문을 분할 할 수 있습니까? 첫 번째 배열 토큰이 헤더가됩니다. LBound (Split (Msg.Body, vbCrLf)) + 1에서 UBound()까지의 모든 것이 데이터가됩니다. – JimmyPena
@TimWilliams 네, Excel에서 붙여 넣었습니다! – kinkajou