2014-02-11 4 views
1

Если пользователь скопировал файл в буфер обмена в файловой системе, я бы хотел, чтобы пользователь вернулся в электронную таблицу Excel и нажал кнопку. Код этой кнопки должен вставить этот файл в предопределенную папку.Вставить скопированный файл из буфера обмена в файловую систему

Я знаю, что через VBA можно читать/записывать строку в/из буфера обмена. Возможно ли в VBA прочитать скопированный файл из буфера обмена и поместить его в папку (файл не нужно открывать во время этой операции)?

+1

Я думаю, что получить оболочку для правильной * вставки * было бы трудно, вот как получить имена файлов, чтобы вы могли 'FileCopy()' их: http://stackoverflow.com/a/2913670/246342 –

+0

Не указывайте вопросы VBA как VB6. – Bob77

+0

Боб, в соответствии с принятым ответом здесь http://stackoverflow.com/questions/993300/difference-between-visual-basic-and-vba, VBA и VB6 - это в основном тот же язык, поэтому мое включение тега VB6. Я бы предположил, что решение моего вопроса может быть применено как к VBA, так и к VB6. Обратите внимание, что мой вопрос о буфере обмена не относится к объектной модели Excel. –

ответ

3

Когда вы копируете файл в буфер обмена в Проводнике, сам файл не помещается в буфер обмена (изображение, что произойдет, если вы скопируете файл размером 200 ГБ :)). Вместо этого Explorer помещает, например, путь файла в буфере обмена в специальном формате буфера обмена (то есть нетекстовом). Подробнее о форматах можно узнать по номеру MSDN.

Я не работал с этими форматами буфера обмена, но кажется, что в большинстве случаев вы будете искать формат CF_HDROP. Вам понадобится довольно VBA для массажа данных по пути файла, но оттуда это простая копия файла для завершения операции.

Смежные вопросы