Excel vba скопировать данные из другого файла

Обновлено: 07.07.2024

предположим, у меня есть 2 файла 1.xls и 2.xls, и мне надо из первого с листа "Лист1" ячейки (1,1) перенести значение во второй туда же
как это прописать в макросе второго файла?
как в "Worksheets(Лист1).Cells(1, 1) = Worksheets(Лист1).Cells(1, 1)" добавить и сами файлы?


просто ссылкой не катит, тк теоретически надо переносить сотни (если не тысячи) данных, с поисками и тп.

Здравствуйте russian imigration.
"Предположим" я догадался, что Ваш пост является вопросом, но совсем не понятно к кому он обращен, и кому Вы "заранее" благодарны.

что-то никак не получается, а файл, что выложил Тесленко не открывается
значит так:
у меня макрос ВБ в одном экселевском документе, ему надо прочитать ячейки из другого экселевского документа
создал переменную FileToOpen с полным путем на второй файл (для чтения). проверил, переменная равна
F:\calc 0.3\шаблон РТМ русифицированный.xls

мне на это дело выдает "Subscript out of range"
подскажите, пожалуйста, как правильно написать Здравствуйте russian imigration.
1. Что значит ". файл . не открывается. ", невозможно открыть архив или не подключается надстройка?
2. "создал переменную . проверил, переменная равна . " - а объект (файл), адрес которого содержит переменная, открывался ?
С помощью кода приведенного ниже, можно выполнить Вашу задачу
Евгений.
P.S. "подскажите, пожалуйста. " - это обращение снова адресовано "никому", если Вы не знаете к кому обращаться - просто здоровайтесь, это тоже будет правильно. Teslenko_EA писал(а): Здравствуйте russian imigration.
1. Что значит ". файл . не открывается. ", невозможно открыть архив или не подключается надстройка?
2. "создал переменную . проверил, переменная равна . " - а объект (файл), адрес которого содержит переменная, открывался ?

Добрый день, Евгений Teslenko_EA
Спасибо за ответ.
1. теперь все открывается. раньше писало, что файл по данному адресу не найден, то есть не удавалось скачать его.
2. нет, сам файл оставался закрытым. обязательно ли надо его открывать, чтобы прочитать из него данные? от постоянно требует обновлений данных, что не очень удобно (но, в принципе, с этим можно смириться)

Насчет переменной str я понял еще вчера во время попыток отладки. Что-то задумался и создал такую, а потом, увидев у себя код типа "str = str(ячейка в экселе)", сам удивился, как такое написал

ЗЫ. Еще раз спасибо, что подсказываете, в том числе и как общаться. По ходу у меня с этим проблемы Не обращаясь ни к кому конкретно, я подразумевал, что ответит тот, кто будет знать ответ.

mc-black, спасибо за ответ, но, в принципе, Ваш код совпал с кодом Teslenko_EA

В этом уроке я покажу Вам самые популярные макросы в VBA Excel, которые вы сможете использовать для оптимизации своей работы. VBA - это язык программирования, который может использоваться для расширения возможностей MS Excel и других приложений MS Office. Это чрезвычайно полезно для пользователей MS Excel, поскольку VBA может использоваться для автоматизации вашей работы и значительно увеличить Вашу эффективность. В этой статье Вы познакомитесь с VBA и я вам покажу некоторые из наиболее полезных, готовых к использованию примеров VBA. Вы сможете использовать эти примеры для создания собственных скриптов, соответствующих Вашим потребностям.

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

Я подготовил для вас несколько самых полезных примеров VBA Excel с большой функциональностью, которую вы сможете использовать для оптимизации своей работы. Чтобы их использовать, вам необходимо записать их в файл. Следующий параграф посвящен установке макроса Excel. Пропустите эту часть, если вы уже знакомы с этим.

Table of Contents

Как включить макросы в Excel

В Excel нажмите комбинацию клавиш alt + F11. Это приведет вас к редактору VBA в MS Excel. Затем щелкните правой кнопкой мыши папку Microsoft Excel Objects слева и выберите Insert => Module. Это место, где сохраняются макросы. Чтобы использовать макрос, вам нужно сохранить документ Excel как макрос. Из табуляции File => Save as, выберите Save as macro-enabled Workbok (расширение .xlsm) Теперь пришло время написать свой первый макрос!

1. Копирование данных из одного файла в другой.

Очень полезный макрос, поскольку он показывает, как скопировать ряд данных изнутри vba и как создать и назвать новую книгу. Вы можете изменить этот макрос в соответствии с вашими собственными требованиями:

2. Отображение скрытых строк

Иногда большие файлы Excel можно содержать скрытые строки для большей ясности И для лучшего удобства пользователей. Вот один макрос, который отобразит все строки из активной рабочей таблицы:

3. Удаление пустых строк и столбов

Пустые строки в Excel - может быть проблемой для обработки данных. Вот как избавиться от них:

4. Нахождение пустых ячеек

13. Создание сводной таблицы

Вот как создать сводную таблицу в MS Excel (версия 2007). Особенно полезно, когда вы делаете индивидуальный отчет каждый день. Вы можете оптимизировать создание сводной таблицы следующим образом:

14. Отправка активного файла по электронной почте

15. Вставка всех графиков Excel в презентацию PowerPoint

Очень удобный макрос, который позволяет вам добавлять все ваши графики Excel в презентацию Powerpoint одним щелчком мыши:

16. Вставка таблицы Excel в MS Word

Таблицы Excel обычно помещаются внутри текстовых документов. Вот один автоматический способ экспорта таблицы Excel в MS Word:

17. Извлечение слов из текста

Мы можем использовать формулы, если хотим извлечь определенное количество символов. Но что, если мы хотим извлечь только одно слово из предложения или диапазон слов в ячейке? Для этого мы можем сами создать функцию Excel с помощью VBA. Это одна из самых удобных функций VBA, поскольку она позволяет создавать собственные формулы, которые отсутствуют в MS Excel. Давайте продолжим и создадим две функции: findword() и findwordrev():

Отлично, мы уже создали две новые функции в Excel! Теперь попробуйте использовать их в Excel. Функция = FindWordRev (A1,1) берет последнее слово из ячейки A1. Функция = FindWord (A1,3) берет третье слово из ячейки A1 и т. Д.

18. Защита данных в MS Excel

Иногда мы хотим защитить данных нашего файла, чтобы только мы могли его изменять. Вот как это сделать с VBA:

Поздравления! Поскольку вы все еще читаете это, вы действительно заинтересованы в изучении VBA. Как вы уже сами видели, язык программирования VBA чрезвычайно полезен и может сэкономить нам много времени. Надеюсь, вы нашли эту информацию полезной и использовали ее, чтобы стать мастером MS Excel, VBA и компьютерных наук в целом.

Если это так, я выйду из While Loop, если это не так, я все скопирую. На самом деле это не сработает, как я хочу, но у меня не будет проблем с поиском правильного алгоритма.

Моя проблема в том, что я не знаю, как получить доступ к различным книгам.

Вам может понравиться функция GetInfoFromClosedFile ()

Правка: так как вышеуказанная ссылка, кажется, больше не работает, я добавляю альтернативная ссылка 1 и альтернативная ссылка 2 + код:

Лучший (и самый простой) способ скопировать данные из рабочей книги в другую - это использовать объектную модель Excel.

Существует очень мало причин, чтобы не открывать несколько книг в Excel. Ключевые строки кода:

. тогда вы не увидите ничего, пока выполняется код, и не будет выполняться код, связанный с открытием второй книги. Тогда есть .

Если открытие второй книги не приведет к проблемам с производительностью, вы также можете это сделать. Фактически, наличие второй открытой книги сделает ее очень полезной при попытке отладки вашего кода, если некоторые из вторичных файлов не соответствуют ожидаемому формату.

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

Дополнительный вопрос будет заключаться в том, как циклически перебирать несколько файлов, содержащихся в одной папке. Вы можете использовать средство выбора папок Windows, используя:

Надеюсь, что некоторые из вышеперечисленных будут полезны

Вы ищете синтаксис для их открытия:

Затем вы можете использовать wkbk.Sheets(1).Range("3:3") (или все, что вам нужно)

У меня был тот же вопрос, но применение предоставленных решений изменило файл для записи. Как только я выбрал новый файл Excel, я также записывал в этот файл, а не в свой исходный файл. Мое решение для этой проблемы ниже:

С excelapp будет вызвано новое приложение. Блок with устанавливает путь для внешнего файла. Наконец, я установил внешнюю книгу с source и srcSH1 в качестве рабочего листа на внешнем листе.


Есть много способов скопировать или переместить файл из одной папки в другую. Мы можем сделать это вручную, скопировав и вырезав значок файла и вставив его в папку назначения. Но когда дело доходит до автоматизации этого процесса копирования файла, мы можем сделать это и в VBA. Чтобы скопировать файл, у нас есть функция, доступная в VBA, которая называется «Копирование файла».

Синтаксис FileCopy в Excel VBA

Применить File Copy в VBA очень легко. Синтаксис File Copy выглядит так, как показано ниже.


File Copy имеет только два компонента для подачи. Которые:

  • Источник - Здесь мы разместим исходное местоположение, откуда нам нужно скопировать файл.
  • Назначение - и это будет папка назначения, в которую мы будем вставлять скопированный файл.

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

Как скопировать файл в Excel VBA?

Теперь давайте попробуем с некоторыми примерами копирования файлов VBA в Excel.

Вы можете скачать этот VBA Скопировать файл Excel шаблон здесь - VBA Скопировать файл Excel шаблон

Пример № 1 - FileCopy в VBA

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

Для этого нам понадобится файл любого вида или расширения. Здесь мы рассматриваем файл Excel с расширением xlsx . Как мы видим, мы поместили этот файл Excel в папку, которая легко доступна и называется Test .


Теперь мы скопируем этот файл с помощью FileCopy в указанную ниже папку назначения.


Шаг 1: Для этого перейдите в VBA и откройте раскрывающийся список «Модуль из вставки», как показано ниже.


Шаг 2: Теперь в открытом модуле напишите подкатегорию VBA FileCopy или любое другое имя по вашему выбору.

Код:


Шаг 3: Теперь откройте функцию FileCopy, как показано ниже.

Код:


Шаг 4: Теперь в кавычках напишите адрес местоположения источника, а затем имя и расширение файла, как показано ниже.

Код:


Шаг 5: В качестве места назначения снова поместите путь в кавычки, затем файл и расширение.

Код:


Шаг 6: Теперь скомпилируйте код и запустите его, нажав на кнопку Play, которая находится под строкой меню. Мы увидим, что файл Excel с именем Test теперь копируется из исходного местоположения в местоположение назначения, как показано ниже. Поскольку в файле ничего не было, размер файла равен 0 КБ .


Пример №2 - FileCopy в VBA

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

Шаг 1: Теперь сначала откройте новый модуль и напишите подкатегорию VBA File Copy, как показано ниже.

Код:


Шаг 2: Сначала определите переменную, в которую мы будем помещать исходное местоположение файла того же файла Excel, который мы использовали в примере-1 в качестве String.

Код:


Шаг 3: Аналогичным образом, нам понадобится еще одна переменная для места назначения.

Код:


Шаг 4: Теперь поместите местоположение в первую определенную переменную, которая является « FirstLocation » вместе с именем файла и его расширением.

Код:


Шаг 5: Аналогичным образом сделайте то же самое для местоположения пункта назначения, используя переменную « SecondLocation», которую мы определили выше.

Код:


Шаг 6: Теперь пришло время использовать функцию FileCopy .

Код:


В соответствии с синтаксисом FileCopy, во-первых, мы должны указать местоположение источника, где мы сохранили файл. Но, как мы уже определили выше, исходные и целевые папки для обеих переменных.

Шаг 7: Итак, здесь мы можем напрямую выбрать эти переменные. Сначала выберите переменную местоположения источника, которая является FirstLocation .

Код:


Шаг 8: Снова аналогичным образом выберите переменную места назначения, которая является SecondLocation, как показано ниже.

Код:


Шаг 9: После этого мы скомпилируем код, нажав функциональную клавишу F8. И если ошибки не найдены, запустите код. Мы увидим, что файл из исходного местоположения копируется и вставляется в папку назначения, как показано ниже.


Мы можем попробовать другой путь. Для теста давайте рассмотрим другое местоположение источника, где у нас будет файл слова.

Как мы видим, в файле нет данных, поэтому размер снова отображается как 0 КБ.


И целевой папкой будет папка «Расположение вывода», которая находится в папке «Расположение ввода». Если мы видим внутри файла, нет доступных данных.


Теперь мы заменим источник и назначение в переменных FirstLocation и Second Location соответственно, за которыми следуют имя файла и его расширение.

Код:


Теперь запустите код.

Мы увидим, что файл Test word теперь копируется из папки Input Location в папку Output location с тем же размером, который равен 0 КБ.


Плюсы FileCopy в VBA

  • Может использоваться для копирования более 1 файла за один снимок.
  • Для 10 файлов требуется примерно столько же времени, сколько для копирования одного файла.
  • Мы можем использовать любой тип файла расширения, который мы хотим скопировать.

То, что нужно запомнить

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

Рекомендуемые статьи

Это руководство по FileCopy в VBA. Здесь мы обсуждаем, как скопировать файл Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Читайте также: