2016-06-10 3 views
1

몇 가지 게시물을 열어 볼 수 있습니다. 나는 프로그래밍을 조금 해 봤지만 VBA로는 아무 것도하지 않았습니다. 매일 [Tk # *******] New Request (* = 7 digit number)로 시작하는 제목 줄을 포함하는 10에서 50까지의 일련의 이메일을받습니다. 본문 텍스트 안에는 양식이 있습니다. 그것은 다음과 같습니다VBA Outlook 2010. 특정 Outlook 본문 텍스트를 추출하여 Excel

Body Text

I 다음 '까지 유효한' 'G'에서 'C'에서 '사용자 이름', '회사'로 설정 엑셀 시트를 가지고 'H'와 '티켓에 '내가'. 먼저 제목에서 7 자리 티켓 번호를 추출하여 Excel '티켓'필드에 입력 한 다음 로그인 필드의 'smithjoh'부분을 '사용자 이름'에 입력 한 다음 나열된 외부 회사를 'Company'그리고 마지막으로 '유효 기간'으로 끝납니다.

먼저 데이터의 특정 섹션을 추출 할 수 있는지 여부를 알고 싶습니다. 누군가가이 작업을 통해 나를 도와 주면 가장 감사하게 생각합니다. 나는 그것을 스스로 시도했지만 경험 부족으로 인해 내게 우둔함이 남겨져 불행하게도 아무 일도 할 수 없다. 이것이 가능하다면 매우 지루한 수작업을 자동화하기 때문에 많은 도움이 될 것입니다. 당신은 문제없이 몸과 제목을 잡는 경우

덕분에, 마크

+0

TK부터 시작 하시겠습니까? 폭풍 병사들에게서 이메일을 받고 있습니까? 당신은 당신이 시도한 어떤 것을 가지고 있습니까? 그것은 보통 고양이를 다듬는 많은 방법이 있기 때문에 가장 잘 받아 들여집니다. 시도하고 실패한 경우 작동하도록 몇 가지 빠른 수정 사항이있을 수 있습니다. – Rodger

+0

내가 지금까지 시도한 것은 위대한 작품 전체 텍스트 본문을 복사하는 것입니다. 나는 특정 텍스트 만 grap하는 방법을 찾기 위해 온라인을 둘러 보았지만 아무 것도 보이지 않습니다. 나는 어디에서 시작해야할지 전혀 모른다. 미안하다. Tk는 티켓을 나타냅니다. 이는 자동화 된 티켓 번호입니다 : P –

+1

특정 텍스트의 경우 정규 표현식 또는 Instr과 Mid, 또는 Split 조합을 사용할 수 있습니다. 또한 본문 또는 전자 메일이 텍스트인지 또는 테이블인지에 따라 다릅니다. 코드를 제공하고 문제를 지적해야합니다. –

답변

0

좋아, 당신은 단지 문자열 조작을 할 필요가있다. 그들을 각각 변수로 읽습니다. 당신의 주제가 문자 적으로 "TK # ******* New Request"라고 가정하면, 이것은 당신을 시작하게 할 것입니다. 기본적으로 끌어낼 각 파트에 대해이 논리를 반복하십시오. 변수에 값이 있으면 그 값을 셀에 넣을 수 있습니다. 당신이 잡아 바로 시작하는 장소를 찾는 장소를 종료 한 다음 변수에 넣어 중반을 사용하는 논리를 반복 할 모든 다른 부분

Dim sSubject as string 
Dim sBody as string 
Dim sTicket as string 
Dim sLogin as string 
Dim lLoginPos as long 
Dim iLoginLength as integer 

sTicket = Mid(sSubject,4,7) 'start 4th char and grab 7 ... if you actually have the brackets in the subject then do 5,7 

lLoginPos = InStr(sBody, "emea") + 5 'if they aren't all emea you will need to key off the "Req on behalf name" and add more to the result the result will be the e in emea so add 5 to get past that to the login. 
iLoginLength = InStr(sBody, "Req on behalf mail") - lLoginPos ' you might need to subtract an additional 1 or 2 if your result isn't perfect. Not sure what the blank white spaces in your screenshot will do here. 
sLogin = Mid(sBody,lLoginPos,iLoginLength) ' grabs that username. 
With Sheets("Sheet1") 
    cells(1,3) = sLogin ' puts that into Row 1 Colum 3 (C) Cells is R1C1 ... backwards from the normal way you think of excel 
End With 

를 사용하여 다른 문자열 변수.

나머지 부분을 채우고 코드를 게시하여 문제가되는 줄을 알려주십시오. 현지인 창을 켜고 F8 키를 사용하여 한 번에 한 줄씩 코드를 단계별로 실행하여 정확히 무슨 일이 일어나는지 볼 수 있습니다. 이것은 특히 문자열 조작에 유용합니다.

+0

고마워요. 나는 그것을 풀어주고 내가 문제가 있는지 알려 줄 것이다. –

+0

글쎄요, 코드에 감사 드리며 계속 진행되고 있습니다.하지만 VBA와 매크로 프로그래밍에 대해 정확히 제로 경험이 있었음을 인정해야합니다. 이전에는 매크로가 완전히 멈췄습니다. 나는이 포럼이 뭔가를 할 수있는 코드를 요구하는 것이 아니라 누군가가 당신을 위해 코드를 요구한다는 것을 알고 있습니다.하지만 그것은 본질적으로 제가 필요로하는 것입니다. 어쨌든 도와 주셔서 감사합니다.하지만 그러한 작업에 착수하기 전에 먼저 기본 지식을 배워야합니다. –

+0

당신은 당신이 다른 게시물을 통해 갔다고 말했고, 그들은 당신이 필요로하는 것을하지 않았습니다. 그들은 그것의 일부를하고 당신은 그것을 수정하는 데 어려움을 겪고 있습니까? 아니면 무엇을 시도 했습니까? 그건 실제로 당신이 필요로하는 것을 성취하기위한 경쟁자가 아니 었습니다. 귀하의 게시물을 바탕으로 나는 당신이 성공적으로 이메일에서 텍스트를 끌어 와서 이미 그것을 엑셀로 묶어서 문자열을 가져 오는 데 도움이 필요하다고 생각했습니다. 너 뭐 해봤 니? 너 어디 프로젝트에있어? – Rodger