Excel 스프레드 시트에 OLEObjects (zip 파일)가 1 ~ 4 개 첨부되어 있습니다.OLEObject를 복사하여 폴더 또는 데스크톱에 붙여 넣기
개체 중 하나를 마우스 오른쪽 단추로 클릭하고 바탕 화면이나 탐색기 창으로 이동 한 다음 마우스 오른쪽 단추로 클릭 한 다음 붙여 넣기를 클릭하여 해당 폴더에 zip 파일을 만들 수 있습니다.
내가 할 수있는 한, VBA로이 과정의 붙여 넣기 단계를 자동화 할 수 없습니다.
또한이 수동 프로세스를 여러 개체에서 동시에 수행 할 수 없으므로 해결 방법 (모든 클립 보드로 복사 한 다음 탐색기 윈도우 열기)이 작동하지 않습니다.
가장 좋은 해결 방법은 각 개체를 차례로 복사하고, ShellAndWait 탐색기 창에서 파일을 붙여 넣은 다음 완료되면 창을 닫고 다음 개체로 이동하는 것입니다.
Sub blunt_extract()
If MsgBox("All attachments will be downloaded to your Documents folder", vbOKCancel Or vbInformation, "") = vbCancel Then Exit Sub
Dim o As OLEObject, ws As Worksheet, rM As Range, ATT As String
On Error Resume Next
MkDir modSpecialFolders.SpecFolder(modSpecialFolders.CSIDL_PERSONAL) & "\CIRF\"
MsgBox "For each attachment, Explorer will launch in the CIRF folder. Right-click > Paste the zip file, then close the Explorer window to continue", , "Save Attachment"
Set ws = ThisWorkbook.Sheets(wsA)
For Each o In ws.OLEObjects
If Left(o.Name, 11) = "Attachment " Then
o.Copy
ShellAndWait "explorer " & modSpecialFolders.SpecFolder(modSpecialFolders.CSIDL_PERSONAL) & "\CIRF\", 0, vbNormalFocus, PromptUser
MsgBox "Done pasting? Click OK to continue", , "Save Attachment"
End If
Next o
On Error GoTo 0
End Sub
추가 읽기를 원하거나 해결책이 있습니까?
에 워크 시트에 포함 된 OLE 개체를 이동하기 위해 (테스트) 솔루션을 제안한다. 귀하의 질문에 대한 답변을 얻지 못할지 의심 스럽습니다. 현상금을 배치 한 사용자가 장래의 학생뿐만 아니라 쉽게 이용할 수 있도록 가능한 한 답을 일반화하는 것이 도움이 될 수 있습니다. –
@JDB_Dragon oh .. 나는 그것을 알아 차리지 못했다. 신호를 보내 주셔서 감사합니다. 기본적으로 내 대답은 주어진 폴더로 임베디드 OLE 개체 이동 문제를 해결합니다. 나는 OP의 코드에 많은 초점을 맞추지 않고이 일반적인 문제를 해결하기 위해 그것을 수정하려고 노력할 것이다. 다시 한번 감사드립니다 :) –