2
我有在Excel电子表格1和4之间安装OLEObjects(zip文件)。复制一个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
任何关于进一步阅读或甚至解决方案的建议?
的OP近两年前发布此,他最近一次在四月看到在计算器上。我怀疑你的问题会得到答案。这可能有助于尽可能地推广你的答案让谁放在赏金的用户可以使最简单的使用它,以及未来的学生。 –
@JDB_Dragon哦..我没注意到。感谢信号。基本上我的答案解决了将嵌入式OLE对象移动到给定文件夹的问题。我会尝试修改它来解决这个一般问题,而不太关注OP的代码。再次感谢 :) –