Можно ли прикрепить (вложить) произвольные файлы в обычную книгу Excel?
А потом извлечь эти файлы в заданную папку, и работать с ними?
Казалось бы, Excel такого не позволяет. (а если и позволяет, то извлечь вложенные файлы без из запуска - весьма проблематично)
Но, при помощи макросов, можно реализовать что угодно (и сохранение\извлечение файлов в том числе)
Теперь прикрепить к книге Excel любой файл, а затем извлечь его в любую папку под заданным именем, можно при помощи нескольких строк кода!
В прикреплённом к статье файле находятся 2 модуля класса (AttachedFiles и AttachedFile), а также примеры их использования в виде макросов, позволяющих управлять вложениями в книге Excel.
Пример использования функционала модулей класса для сохранения в книге Excel исполняемого файла, с последующим извлечением:
Sub ПрикрепитьФайл() ' прикрепляем файл к книге Excel Dim FileManager As New AttachedFiles, res As Boolean res = FileManager.AttachNewFile("C:\WINDOWS\notepad.exe") End Sub
Sub ИзвлечьФайл() ' из книги Excel на диск Dim FileManager As New AttachedFiles, res As Boolean On Error Resume Next ' на случай, если среди вложений нет файла notepad.exe res = FileManager.GetAttachment("notepad.exe").SaveAs("C:\MyProgram.exe") End Sub
Sub ЗапуститьВложенныйФайл() ' из книги Excel на диск Dim FileManager As New AttachedFiles On Error Resume Next ' на случай, если среди вложений нет файла notepad.exe FileManager.GetAttachment("notepad.exe").Run End Sub