Макрос для копирования данных из одного файла в другой

Обновлено: 07.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В этом уроке я покажу Вам самые популярные макросы в 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 и компьютерных наук в целом.

Добрый вечер, уважаемый Omeg!

Пометте цветом, пожалуйста, блоки формы, количество строк в которых может изменятся. Или же форма неизменна ни по строкам ни по столбцам?

Добрый вечер, уважаемый Omeg!

Пометте цветом, пожалуйста, блоки формы, количество строк в которых может изменятся. Или же форма неизменна ни по строкам ни по столбцам? GWolf

Пометте цветом, пожалуйста, блоки формы, количество строк в которых может изменятся. Или же форма неизменна ни по строкам ни по столбцам? Автор - GWolf
Дата добавления - 17.01.2013 в 18:03

Добрый вечер, уважаемый GWolf!
Пометил строки, количество которых может изменяться. Если это сильно осложняет положение, можно количество полей оставить в таком виде)
Спасибо что откликнулись, два дня сижу с книгой по VBA, но опыта нет, до этого не приходилась делать такие задачи. Очень трудно сразу сообразить что к чему(( Добрый вечер, уважаемый GWolf!
Пометил строки, количество которых может изменяться. Если это сильно осложняет положение, можно количество полей оставить в таком виде)
Спасибо что откликнулись, два дня сижу с книгой по VBA, но опыта нет, до этого не приходилась делать такие задачи. Очень трудно сразу сообразить что к чему(( Omeg

Доброй ночи, уважаемый Omeg!

Пока ждал от Вас ответа, набросал макрос для неизменного количества строк в файле-источнике:

Dim P_familija As String, P_imja As String, P_otcestwo As String
Dim P_NomIspList As String
Dim P_SumOsnDolg As String, P_SumUderj As String, P_SumPerecisl As String

P_familija = "" '- Фамилия
P_imja = "" '- Имя
P_otcestwo = "" '- Отчество
P_NomIspList = "" '- Номер исполнительного листа
P_SumOsnDolg = "" '- Сумма основного долга --> Начальный баланс
P_SumUderj = "" '- Сумма удержанная
P_SumPerecisl = "" '- Сумма начисленная

nR = 0 '- обнуляем счетчик
'закроем файл-приемник с сохранением
.Close SaveChanges:=True
End With
Set wbOp = Nothing '- чистим объектную переменную

'очистим значения переменных
P_familija = ""
P_imja = ""
P_otcestwo = ""
P_NomIspList = ""
P_SumOsnDolg = ""
P_SumUderj = ""
P_SumPerecisl = ""
End Sub

полагаю, что в виду того, что Вы

два дня сижу с книгой по VBA, но опыта нет, до этого не приходилась делать такие задачи. Очень трудно сразу сообразить что к чему
мой труд не будет бесполезен. Для случая с изменяющимися координатами "Итого начислено" и "Итого удержано" код будет несколько другим. Если будете иметь немного терпения то я таки и его Вам напишу!
С уважением GWolf.

Доброй ночи, уважаемый Omeg!

Пока ждал от Вас ответа, набросал макрос для неизменного количества строк в файле-источнике:

Dim P_familija As String, P_imja As String, P_otcestwo As String
Dim P_NomIspList As String
Dim P_SumOsnDolg As String, P_SumUderj As String, P_SumPerecisl As String

P_familija = "" '- Фамилия
P_imja = "" '- Имя
P_otcestwo = "" '- Отчество
P_NomIspList = "" '- Номер исполнительного листа
P_SumOsnDolg = "" '- Сумма основного долга --> Начальный баланс
P_SumUderj = "" '- Сумма удержанная
P_SumPerecisl = "" '- Сумма начисленная

nR = 0 '- обнуляем счетчик
'закроем файл-приемник с сохранением
.Close SaveChanges:=True
End With
Set wbOp = Nothing '- чистим объектную переменную

'очистим значения переменных
P_familija = ""
P_imja = ""
P_otcestwo = ""
P_NomIspList = ""
P_SumOsnDolg = ""
P_SumUderj = ""
P_SumPerecisl = ""
End Sub

полагаю, что в виду того, что Вы

два дня сижу с книгой по VBA, но опыта нет, до этого не приходилась делать такие задачи. Очень трудно сразу сообразить что к чему
мой труд не будет бесполезен. Для случая с изменяющимися координатами "Итого начислено" и "Итого удержано" код будет несколько другим. Если будете иметь немного терпения то я таки и его Вам напишу!
С уважением GWolf. GWolf

Путей к вершине множество. Этот один из многих.

Пока ждал от Вас ответа, набросал макрос для неизменного количества строк в файле-источнике:

Dim P_familija As String, P_imja As String, P_otcestwo As String
Dim P_NomIspList As String
Dim P_SumOsnDolg As String, P_SumUderj As String, P_SumPerecisl As String

P_familija = "" '- Фамилия
P_imja = "" '- Имя
P_otcestwo = "" '- Отчество
P_NomIspList = "" '- Номер исполнительного листа
P_SumOsnDolg = "" '- Сумма основного долга --> Начальный баланс
P_SumUderj = "" '- Сумма удержанная
P_SumPerecisl = "" '- Сумма начисленная

nR = 0 '- обнуляем счетчик
'закроем файл-приемник с сохранением
.Close SaveChanges:=True
End With
Set wbOp = Nothing '- чистим объектную переменную

'очистим значения переменных
P_familija = ""
P_imja = ""
P_otcestwo = ""
P_NomIspList = ""
P_SumOsnDolg = ""
P_SumUderj = ""
P_SumPerecisl = ""
End Sub

предположим, у меня есть 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

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