Поставяне и премахване на различни файлове от Excel книги, Excel макроси

Тя ще изглежда, Excel не позволява това. (И ако това му позволява да се извлече прикачени файлове, без да отваряте навън - е много проблематично)
Въпреки това, с помощта на макрос, можете да реализирате всичко, което желаете (и спаси \ включени разархивиране на файловете)

Сега приложете работната книга на Excel и да е файл, а след това го разархивирайте в някоя папка с посоченото име, е възможно само с няколко реда код!

В приложената статия във файл от клас 2 модул (AttachedFiles и AttachedFile). както и примери за използването им във формата на макроси, които позволяват да управлявате приложения в работна книга на Excel.

Пример за използване на функционални модули класа, за да запишете Excel работна книга в изпълнимия файл, след това извлечение:

Ако искате да прикачите към работна книга на Excel е само един малък файл (например, миниатюрата или иконата)
Използвайте възможността да записвате файлове в рамките на VBA-функции

Помислете за наличните свойства и методи на класовете, използвани за работа с прикачени файлове.

AttachedFiles клас ви позволява да управлявате прикачени файлове.

В клас AttachedFiles има някои свойства, които са на разположение, за да четат и променят:

Вторият модул клас - AttachedFile - ви позволява да работите с определен прикачен файл.

  • SaveAs Метод (незадължително ByVal filepath $) ви позволява да изтеглите (запазване) прикачен файл по определена траектория filepath $.
    Ако пътят е $ filepath не е уточнено, макроса произвежда файл спасяване диалогов прозорец, където можете да посочите папка, в която да извлечете файловете и да посочите името на файла, за да се създаде.
  • Изтриване на метод изтрива за постоянно вградени в файл с Excel
  • Изпълнете метод - ви позволява да стартирате (отворен в програмата по подразбиране) прикачения файл.
    За да направите това, файлът се извлича автоматично до временна папка на Windows, а от там сте стартирането на създаване.
  • функция IsCorrect връща TRUE, ако размерът на площ файлове с данни съответства на дължината на файла (който се съхранява във файла чрез добавяне на книга Excel)
    Ако част от данните за скрит страница (където се съхраняват приложенията) презаписани, функцията връща FALSE, което показва, че нарушаването на целостта на файла.
    Внимание: проверка е бавен. защото в този случай, направена от лист извличане на данни (подобно на извлечените файлове на диска). И, ако приложенията са големи (стотици килобайта или повече), а след това се провери всеки файл може да продължи от няколко секунди до минути (за мулти-мегабайта файлове)
  • функция FileSizeTXT връща размера на файла в достъпна форма tkestovom. Например, 129 KB, 3.4 KB, 12.7 MB

клас свойства AttachedFiles са само за четене (въпреки че промяната е възможно, но е желателно):

  • име на файла на имота (As String) съдържа името на прикачения файл с разширение
  • AttachDate собственост (като дата) съхранява датата и часа за добавяне на файл в работна книга на Excel
  • FileSize (As Long) имот връща размера на файла в байтове. Резултатът се връща под формата на числа, за разлика от FileSizeTXT функция на издаване текстова стойност.

Как работи програмата:

Публична установено, PtrSafe Функция GetTickCount Lib "kernel32.dll" (), докато

"наниз
lTime = GetTickCount
За к = 1 до 10
sFlt = ""
За LI = 1 да MAX_STR_SIZE
sFlt = sFlt "*"
Следваща Ли "дава средно по 374 милисекунди
Следваща к
Debug.Print GetTickCount - lTime "дава средно по 3760 мс - неприятности. ;-(

Това е най-предишния пост.

Всичко е по ваша преценка.
Не е неоснователен дял две функции блокират трансформиране (може би полезно)

Обществено строителство MAX_STR_SIZE = 65526
Обществено строителство MAX_BIN_SIZE = 32763

"Линии за преобразуване, съдържащи символи 16richnyh ценности в двоичен низ
"Без низове
"Максимален размер (дължина) sHexStr - MAX_STR_SIZE = 65526
"SHexStr - 16richnye стойности включва
Функция fnHexStrToBinStr (ByVal sHexStr Както стринга) Както стринга
Дим SRET Както стринга, Li толкова дълго, STMP Както стринга * 4, lSz толкова дълго,

lSz = Len (sHexStr) / 2: lSz = IIf (lSz> MAX_BIN_SIZE, MAX_BIN_SIZE, lSz)
SRET = String (lSz, Chr (0))

За LI = 1 да lSz
Средата (STMP, 3) = средата (sHexStr, (LI - 1) * 2 + 1, 2)
Средата (SRET, Li, 1) = Chr (Val (STMP))
Следваща Ли

fnHexStrToBinStr = SRET
Крайна Длъжност

"Превръщане на низ, съдържащ двоичен код в герой низови стойности 16richnyh
"Без низове
"Максимален размер (дължина) sBinStr - MAX_BIN_SIZE = 32763
"SBinStr - съдържа двоични стойности
Функция fnBinStrToHexStr (ByVal sBinStr Както стринга) Както стринга
Дим SRET Както стринга, Li толкова дълго, IC Като цяло число, lSz толкова дълго,
Дим sHtmp Както стринга, STMP Както стринга * 2

lSz = Len (sBinStr): lSz = IIf (lSz> MAX_BIN_SIZE, MAX_BIN_SIZE, lSz)
SRET = String (lSz * 2, Chr (0))

За LI = 1 да Len (sBinStr)
IC = Asc (Mid (sBinStr, Li, 1))
sHtmp = Hex (IC)
STMP = "00": Mid (STMP, 3 - Len (sHtmp)) = sHtmp
Средата (SRET, (LI - 1) * 2 + 1, 2) = STMP
Следваща Ли

fnBinStrToHexStr = SRET
Крайна Длъжност