많은 수의 첨부 파일을 폴더에 저장하고 필터링해야하는 프로젝트를 진행 중입니다.Outlook에서 첨부 파일을 추출하고 제목 줄에 저장하고 잘못된 문자를 제거하려면 어떻게합니까?
현재 첨부 파일을 이메일 제목과 함께 파일 이름으로 저장할 수 있습니다. 첨부 파일이 두 개 이상인 경우 (1) 또는 (2) 등으로 제목 줄로 저장합니다.
나는 현재 내가 (아래 replys에 0m3r의 도움 덕분에) 필요한 대부분의 작업을 수행하는 스크립트를
나는이 스크립트를 완료하는 데 필요한 마지막 것은 특별 caracters을 생략 할 것이다 무언가이다 제목 줄을 파일 이름으로 사용하기 전에 제목 줄. 내가 실행중인 문제는 제목이 정방향 (FW :) 또는 응답 (RE :) 인 경우 프로그램이 파일을 올바르게 저장하지 않는다는 것입니다. ":"는 저장 파일을 손상시키는 것입니다. 예를 들어 제목에 "FW : 여기 2017 요청한 파일이 있습니다"라고 표시되면 파일 확장자없이 "FW"로 저장된 파일이 표시됩니다. 내가 필요한 것은 ":"또는 "FW :"를 제거하는 것입니다.
피사체의 특수 문자를 저장 파일 이름으로 변환 할 때 특수 문자를 제거해야하는 사람이 수정할 수 있습니까?
나는 이것을 수행하기 위해 어레이가 필요할 것이라고 생각하지만, 그것을 구현하는 방법과 스크립트의 어떤 부분을 추가 할 것인지 잘 모르겠습니다.
배열과 같은 것 (< ","| ","/ ","* ","\ ","? "," "" "" "" "")
Public Function SaveAttachmentsFromSelection() As Long
Dim objFSO As Object
Dim objShell As Object
Dim objFolder As Object
Dim objItem As Object
Dim selItems As Selection
Dim atmt As Attachment
Dim strAtmtPath As String
Dim strAtmtFullName As String
Dim strAtmtName As String
Dim strAtmtNameTemp As String
Dim intDotPosition As Integer
Dim atmts As Attachments
Dim lCountEachItem As Long
Dim lCountAllItems As Long
Dim strFolderPath As String
Dim blnIsEnd As Boolean
Dim blnIsSave As Boolean
blnIsEnd = False
blnIsSave = False
lCountAllItems = 0
On Error Resume Next
Set selItems = ActiveExplorer.Selection
If Err.Number = 0 Then
lHwnd = FindWindow(olAppCLSN, vbNullString)
If lHwnd <> 0 Then
Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objShell.BrowseForFolder(lHwnd, "Select folder to save attachments:", _
BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN, CSIDL_DESKTOP)
If Err.Number <> 0 Then
MsgBox "Run-time error '" & CStr(Err.Number) & " (0x" & CStr(Hex(Err.Number)) & ")':" & vbNewLine & _
Err.Description & ".", vbCritical, "Error from Attachment Saver"
blnIsEnd = True
GoTo PROC_EXIT
End If
If objFolder Is Nothing Then
strFolderPath = ""
blnIsEnd = True
GoTo PROC_EXIT
Else
strFolderPath = CGPath(objFolder.Self.Path)
For Each objItem In selItems
lCountEachItem = objItem.Attachments.Count
If lCountEachItem > 0 Then
Set atmts = objItem.Attachments
For Each atmt In atmts
strAtmtFullName = atmt.FileName
intDotPosition = InStrRev(strAtmtFullName, ".")
strAtmtName = Right$(strAtmtFullName, Len(strAtmtFullName) - intDotPosition)
strAtmtPath = strFolderPath & objItem.subject & Chr(46) & strAtmtName
Dim lngF As Long
lngF = 1
If Len(strAtmtPath) <= MAX_PATH Then
blnIsSave = True
Do While objFSO.FileExists(strAtmtPath)
strAtmtNameTemp = objItem.subject & "(" & lngF & ")"
strAtmtPath = strFolderPath & strAtmtNameTemp & Chr(46) & strAtmtName
If Len(strAtmtPath) > MAX_PATH Then
lCountEachItem = lCountEachItem - 1
blnIsSave = False
Exit Do
End If
lngF = lngF + 1
Loop
If blnIsSave Then atmt.SaveAsFile strAtmtPath
Else
lCountEachItem = lCountEachItem - 1
End If
Next
End If
lCountAllItems = lCountAllItems + lCountEachItem
Next
End If
Else
MsgBox "Failed to get the handle of Outlook window!", vbCritical, "Error from Attachment Saver"
blnIsEnd = True
GoTo PROC_EXIT
End If
Else
MsgBox "Please select an Outlook item at least.", vbExclamation, "Message from Attachment Saver"
blnIsEnd = True
End If
PROC_EXIT:
SaveAttachmentsFromSelection = lCountAllItems
If Not (objFSO Is Nothing) Then Set objFSO = Nothing
If Not (objItem Is Nothing) Then Set objItem = Nothing
If Not (selItems Is Nothing) Then Set selItems = Nothing
If Not (atmt Is Nothing) Then Set atmt = Nothing
If Not (atmts Is Nothing) Then Set atmts = Nothing
If blnIsEnd Then End
End Function
Public Function CGPath(ByVal Path As String) As String
If Right(Path, 1) <> "\" Then Path = Path & "\"
CGPath = Path
End Function
Public Sub ExecuteSaving()
Dim lNum As Long
lNum = SaveAttachmentsFromSelection
If lNum > 0 Then
MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully.", vbInformation, "Message from Attachment Saver"
Else
MsgBox "No attachment(s) in the selected Outlook items.", vbInformation, "Message from Attachment Saver"
End If
End Sub
안녕하세요. [What topic about here?] (http://stackoverflow.com/help/on-topic) 및 [질문하지 않는 질문은 무엇입니까?] (http : //stackoverflow.com/help/on-topic) 등의 도움말 페이지를 읽으십시오. : //stackoverflow.com/help/dont-ask). 또한 SO는 코드 작성 서비스가 아닙니다 ... 우리는 특정 질문이나 오류를 통해 다른 프로그래머를 돕는 프로그래머입니다. 작업중인 코드를 포함하지 않고 오류나 기대에 대한 자세한 설명과 현실을 비교하면 ... 우리는별로 도움이되지 않습니다. [MCVE] (http://stackoverflow.com/help/mcve)에서 포맷 된 코드를 사용하십시오 – Rdster
문제점을 이해하지 못합니다. 첨부 파일을 저장하는 코드를 찾았습니다. 여기에는 'ItemCrnt.Attachment (InxA) Path & FileName'과 같은 문구가 포함됩니다. 일반적으로'FileName'은 첨부 파일의'DisplayName'입니다. 첫째,'DisplayName'에서 선행 마침표를 사용하여 확장자를 추출해야합니다. 두 번째로 save 문을 다음으로 대체하십시오 : ItemCrnt.Attachment (InxA) Path & ItemCrnt.Subject & "("& InxA & ")"& Extn' –
문제를 고칠 수 있도록 코드를 게시 할 수 있습니까? – 0m3r