>

Outlook받은 편지함 폴더의 첨부 파일에서 "string = my_string"을 검색하려고합니다. 이 "문자열"이 있으면 메일을 다른 폴더로 옮기고 싶습니다. 코드를 찾았고 개선하려고했지만 여전히 작동하지 않습니다. 도움을 주시면 감사하겠습니다.

수정 코드는 다음과 같습니다.

Sub test2()
 Const strFindText As String = "Completed"
 Const strFileType As String = "xlsx|xls"
 Const strPath As String = "C:\Users\PC2\Documents\Georg\Attachment\"
Dim vFileType As Variant
 Dim strFilename As String
 Dim strName As String
 Dim olItems As Outlook.Items
 Dim olItem As Outlook.MailItem
 Dim wb As Object
 Dim xlApp As Object
 Dim olAttach As Outlook.Attachment
 Dim strFolder As String
 Dim bStarted As Boolean
 Dim bFound As Boolean
 Dim i As Long, i_V As Long
Dim fdObj As FileSystemObject
    Set fdObj = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If Err Then
        Set xlApp = CreateObject("Excel.Application")
        bStarted = True
    End If
    On Error GoTo 0
    xlApp.Visible = True
If Not fdObj.FolderExists(strPath & strFindText) 
 Then fdObj.CreateFolder strPath & strFindText
End If
Set olItems = Session.GetDefaultFolder(olFolderInbox).Items
For i = olItems.Count To 1 Step -1
   Set olItem = olItems(i)
   If olItem.Attachments.Count > 0 Then
   vFileType = Split(strFileType, "|")
   For Each olAttach In olItem.Attachments
   For i_V = 0 To UBound(vFileType)
   If Right(LCase(olAttach.FileName), Len(vFileType(i_V))) = vFileType(i_V)
 Then strFilename = strPath & 
 Format(olItem.ReceivedTime, "yyyymmdd-HHMMSS") & _" " & olAttach.FileNameolAttach.SaveAsFile strFilename
    Set wb = xlApp.Workbooks.Open(strFilename)
    With xlApp.Find(strFilename, xlValues, xlWhole)
        bFound = False
    Do While .Find(strFindText).Activate    '<-I have problem here
        bFound = True
    Loop
    strName = wb.Name
    wb.Close 0
        If bFound Then
        Name strFilename As strPath & strFindText & "\" & strName
        End If
    End With
End If
Next i_V
Next olAttach
End If
Next i
    If bStarted Then xl.App.Quit
    Set wb = Nothing
    Set xlApp = Nothing
    Set olItem = Nothing
    Set olItems = Nothing
End Sub

  • 답변 # 1

    귀하의 코드를 간략히 살펴보고 오류를 발견하여 의견에보고했습니다. 그런 다음 의견에보고 한 또 다른 오류와 다른 오류를 발견했습니다. 내 의견 이이 코드의 작성자에게 얼마나 의미가 있는지 궁금한 의견을 게시 한 후에야했습니다. 이 답변은 주석의 확대 버전입니다. 코드를 개선하는 데 도움이되지만 완전한 답변을 제공하기에는 누락 된 부분이 너무 많습니다.

    <올>

    와이즈 비즈 Set wdApp = GetObject(, "Excel.Application")  Word 응용 프로그램에 지정된 이름입니다. 내 생각에 Word를 사용하여 무언가를 수행하고 수정 한 코드를 찾았습니다. 와이즈 비즈  Excel 응용 프로그램에는 유효하지 않습니다. 나는 이름 wdApp 를 사용하는 것이 좋습니다 . 통합 문서가 열리고 검색 코드를 Excel 용으로 다시 작성해야합니다.

    Set wdDoc = wdApp.Documents.Open(strFilename) 에 대한 코드를 포함하지 않았습니다  그리고 xlApp  그러나 그들이 FolderExists 를 사용하지 않으면 놀랐습니다. . 모두 CreateFolders  그리고 FileSystemObject  데이터 유형 FileSystemObject . 이 코드가 모두 Outlook에 있으면 Outlook   Folder 로 해석됩니다  그리고 Folder  그리고 Outlook.Folder  작동하지 않을 수 있습니다. 필요한 경우 데이터 유형 FolderExists 를 교체해야합니다.  이 루틴 내에서 CreateFolders .

    Folder  내 시스템에서 작동하지 않습니다. 저는 각각 자체 저장소와받은 편지함이있는 두 개의 전자 메일 주소를 가진 개인 사용자입니다. 기본받은 편지함이 사용되지 않습니다. 이메일 주소가 하나 인 회사 사용자 인 경우 기본받은 편지함은 원하는받은 편지함 일 수 있습니다.

    필자 : "이"문자열 "이 있으면 메일을 다른 폴더로 옮기고 싶습니다."Outlook Scripting.Folder 를 옮기고 싶다는 의미로 해석했습니다.  다른 Outlook 폴더로 이것이 Set olItems = Session.GetDefaultFolder(olFolderInbox).Items 사용에 대해 당신을 비난 한 이유입니다  디스크 파일의 이름을 바꾸거나 선택적으로 새 이름을 가진 다른 디스크 폴더로 옮깁니다. 저장된 첨부 파일을 옮기고 싶었는지 궁금합니다.

    이 답변에는 MailItem 이동 방법을 설명하는 단락이 필요합니다  또는 저장된 첨부 파일을 원하는 곳으로 옮겼습니다. 이 답변에 원하는 설명을 추가하십시오.

    와이즈 비즈 "my_root"는 자리 표시 자이므로 기밀 정보를 공개 할 필요는 없습니다. 실제 값이 "C : \ Users \ Georg \ Documents"라고 가정 해 봅시다. 이것이 사실이라면"C : \ Users \ Georg \ Documentsmy_string"의 경로를 만드는 것입니다. 실제 값이 "C : \ Users \ Georg \ Documents \"이면 "C : \ Users \ Georg \ Documents \ my_string"의 경로를 만드는 것입니다. 어느 쪽이든,"my_string"의 실제 값에 폴더 이름 내에서 유효하지 않은 문자가 포함되어 있지 않다고 가정합니다. 검색 문자열을 포함하기 위해 폴더 이름이 필요한 이유를 이해하지 못합니다. 첨부 파일 테스트에 사용하기위한 임시 폴더입니다. "C : \ Users \ Georg \ Documents \ SavedAttachments"또는 다른 임시 폴더라고 부르지 않겠습니까?

    폴더와 파일 이름을 구분하여주의하십시오. 당신은 Name 를 사용합니다  그리고 MailItem . 나는 Const strPath As String = " my_root " 를 가정  실수입니다. 왜 Chr(32) 대신"\"를 쓰지 않겠습니까?  어느 것이 더 명확합니까? 나는 Chr(92) 를 사용  필요할 때 문자를 쓰는 것이 더 명확합니다. 파일 탐색기를 사용한 사람은 누구나"\"를 알고 있지만 얼마나 많은 사람들이 Chr(32) 를 알고 있는지 알고 있습니다  그것을 보지 않고 의미합니다.

    저장된 첨부 파일에 부여한 복잡한 파일 이름을 이해하지 못합니다. 첨부 파일을 다른 이름의 다른 폴더로 옮기려면 첨부 파일을 원하지 않으면 Chr(92) 를 사용하여 삭제해야합니다. . 어느 쪽이든 간단합니다. 고정 파일 이름 만 있으면됩니다.

    특정 문자열에 대한 통합 문서를 검색하는 방법을 알고 있습니까? 기존 코드는 모두 Word 문서를 열고 검색하기위한 것입니다.

    문단에 번호를 매겼으므로 질문을해야하는 경우 쉽게 참조 할 수 있습니다.

    Chr()

  • 이전 java - 스프링 배치 - horked csv 파일을 구문 분석하는 방법은 무엇입니까?
  • 다음 javascript - Yup으로 전화 번호를 확인 하시겠습니까?