Копировать файлы VBA Excel
Обновлено: 21.11.2024
Копирует один или несколько файлов из одного места в другое.
Синтаксис
объект.CopyFile источник, назначение, [ перезаписать ]
Синтаксис метода CopyFile состоит из следующих частей:
Часть | Описание | ||
---|---|---|---|
object | Обязательный. object всегда является именем FileSystemObject. | ||
source< /td> | Обязательно. Спецификация файла строки символов, которая может включать подстановочные знаки, для одного или нескольких копируемых файлов. | ||
destination em> | Обязательно. Пункт назначения строки символов, куда необходимо скопировать файл или файлы из источника. Подстановочные знаки не допускаются. | ||
перезаписать | Необязательно. Логическое значение, указывающее, следует ли перезаписывать существующие файлы. Если True, файлы перезаписываются; если False, это не так. Значение по умолчанию — Истина. Обратите внимание, что функция CopyFile завершится ошибкой, если атрибут destination установлен только для чтения, независимо от значения параметра overwrite. |
Имя | Обязательный/Необязательный | Тип данных | Описание |
---|---|---|---|
До | Необязательно | Вариант | Лист, перед которым будет размещен скопированный лист. Вы не можете указать До, если вы укажете После. |
После | Необязательно | Вариант | Лист, после которого будет размещен скопированный лист. Вы не можете указать После, если вы указали До. |
Примечания
Если вы не укажете ни До, ни После, Microsoft Excel создаст новую книгу, содержащую скопированный объект Worksheet. Вновь созданная рабочая книга содержит свойство Application.ActiveWorkbook и содержит один рабочий лист. Один лист сохраняет свойства Name и CodeName исходного листа. Если скопированный рабочий лист содержит кодовый лист рабочего листа в проекте VBA, он также переносится в новую рабочую книгу.
Выбранный массив из нескольких рабочих листов можно скопировать в новый пустой объект Workbook аналогичным образом.
Источник и место назначения должны находиться в одном и том же экземпляре Excel.Application, иначе возникнет ошибка времени выполнения "1004": такой интерфейс не поддерживается, если что-то вроде Sheet1.Copy objWb.Использовались Sheets(1) или ошибка времени выполнения "1004": метод копирования класса Worksheet не удался, если использовалось что-то вроде ThisWorkbook.Worksheets("Sheet1").Copy objWb.Sheets(1).
Пример
В этом примере копируется Лист1, размещая копию после Листа3.
В этом примере лист Sheet1 сначала копируется в новую пустую книгу, а затем сохраняется и закрывается новая книга.
В этом примере листы Sheet1, Sheet2 и Sheet4 копируются в новую пустую книгу, а затем сохраняются и закрываются.
Поддержка и обратная связь
Есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы об Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.
Если рабочая книга содержит макрос Visual Basic для приложений (VBA), который вы хотели бы использовать в другом месте, вы можете скопировать модуль, содержащий этот макрос, в другую открытую книгу с помощью редактора Visual Basic (VBE).
Макросы и инструменты VBA можно найти на вкладке "Разработчик", которая по умолчанию скрыта, поэтому первым шагом будет ее включение.
В Windows выберите «Файл» > «Параметры» > «Настроить ленту».
Для Mac выберите Excel > Настройки. > Лента и панель инструментов.
Затем в разделе "Настройка ленты" в разделе "Основные вкладки" установите флажок "Разработчик".
Обзор макросов и VBA
Если вы не знакомы с макросами и VBA в целом, вам может быть полезна следующая информация.
Макрос – это действие или набор действий, которые можно использовать для автоматизации задач.
Вы можете записывать макросы с помощью команды "Запись макроса" на вкладке "Разработчик".
Макросы записываются на языке программирования VBA.
Вы можете просматривать и редактировать свои макросы в редакторе Visual Basic, окне, которое открывается в Excel. Вот пример окна VBE для Windows:
Макросы с именами MakeCellGreen и SetRowHeight находятся в модуле с именем Module1, который хранится в Book1.
Копирование модуля из одной книги в другую
Откройте книгу, содержащую макрос, который вы хотите скопировать, и книгу, в которую вы хотите его скопировать.
На вкладке "Разработчик" нажмите Visual Basic, чтобы открыть редактор Visual Basic.
В редакторе Visual Basic в меню "Вид" выберите "Проводник проекта" или нажмите CTRL+R .
На панели Project Explorer перетащите модуль, содержащий макрос, который вы хотите скопировать, в целевую книгу. В данном случае мы копируем Module1 из Book2.xlsm в Book1.xlsm.
Module1 скопирован из Book2.xlsm
Копия Module1 скопирована в Book1.xlsm
Нужна дополнительная помощь?
Вы всегда можете обратиться к эксперту в техническом сообществе Excel или получить поддержку в сообществе ответов.
Итак, у меня есть файл доступа, который мне регулярно нужно копировать в другой каталог, заменяя последнюю версию. Для этого я хотел бы использовать макрос Excel, а также переименовать файл в процессе.
Есть ли простой способ сделать это?
3 ответа 3
Этот метод еще проще, если вы согласны с меньшим количеством опций:
Красиво и просто, однако, когда я использую это решение и копируемая база данных Access открыта, я получаю сообщение об ошибке "Отказано в доступе". Этого не происходит при использовании FileSystemObject.
Тогда вы можете использовать
где источник и место назначения — это полные имена (включая пути) файла.
По сравнению с другим, простым решением с FileCopy, это решение имеет то преимущество, что исходный файл также можно копировать, когда он открыт (например, с помощью MS Access), т. е. когда он доступен только для чтения. р>
Одна вещь, которая вызвала у меня сильную головную боль при использовании этого кода (может повлиять на других, и я бы хотел, чтобы кто-нибудь оставил комментарий, подобный этому, для меня):
- Моя цель — создать панель управления с динамическим доступом, для которой требуется обновление связанных таблиц.
- Я использую методы копирования, описанные выше, чтобы заменить существующие связанные файлы CSV их обновленной версией.
- Выполнение приведенного выше кода вручную из модуля сработало нормально.
- При запуске идентичного кода из формы, связанной с данными CSV, возникала ошибка времени выполнения 70 (отказано в доступе), хотя первым шагом моего кода было закрытие этой формы (что должно было разблокировать файл CSV, чтобы его можно было перезаписать). ).
- Теперь я считаю, что, несмотря на то, что форма закрыта, устаревший файл CSV остается заблокированным, пока выполняется VBA, связанный с этой формой.
Моим решением будет запуск кода (событие по таймеру) из другой скрытой формы, которая открывается вместе с базой данных.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с тегом vba copy или задайте свой вопрос.
Связано
Связанные
Горячие вопросы о сети
Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.
дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.21.41733
Читайте также:
- Как удалить сыворотку с компьютера
- 7 идей, как сделать вашу презентацию более интересной, видеоурок PowerPoint 2019
- Какие из графических редакторов являются векторными adobe photoshop coreldraw paint
- Как включить ноты в Piano Roll Fl Studio 20
- Форматирование ячеек в Excel