Страницы: 1
RSS
Как поменять данные в нескольких книгах не открывая их?, Как не открывая файлы поменять данные в нескольких книгах
 
Привет всем. Прошу помощи.

Кто знает, как с помощью макроса поменять данные одновременно в нескольких книгах (книг больше 100 и открывать каждую слишком долго).

Похожая тема уже обсуждалась на этом же форуме (http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=7585), но интересует немного другая схема: как заменить не определенную ячейку, а целый лист, скажем я создаю шаблон в каком нибудь файле, со значениями и формулами, а потом с помощью макроса переношу этот лист в другие книги, заменяя этим шаблоном 1 лист в других книгах без изменения названия самого листа.

Есть макрос, который вставляет значения в ячейку в разных книгах:
Код
Sub Макрос1()

Dim FilesToOpen
Dim x As Integer
    Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xl*), *.xl*", _
MultiSelect:=True, Title:="Выберите файлы")
If TypeName(FilesToOpen) = "Boolean" Then
    MsgBox "Не выбрано ни одного файла!"
    GoTo ExitHandler
End If
x = 1
    Application.Visible = False
While x <= UBound(FilesToOpen)
    Workbooks.Open Filename:=FilesToOpen(x)

    Sheets(1).Range("A1").Value = "New Title"  'на листе 1 в ячейку А1 написать "New Title"

    ActiveWorkbook.Close savechanges:=True
    x = x + 1
Wend

ExitHandler:
    Application.ScreenUpdating = True
    Application.Visible = True
    Exit Sub
ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

Интересует как допилить этот код, чтобы он не "на листе 1 в ячейку A1 написать new title", а заменял целый лист 1.

Заранее огромное спасибо.

Изменено: bylanovandrej - 02.07.2017 09:50:04
 
По-Вашему Workbooks.Open это
Цитата
не открывая файлы
? Ну-ну...
Я сам - дурнее всякого примера! ...
 
Поэкспериментируйте между 1 и 2 вариантами.
Код
Dim FilesToOpen
Dim x As Integer, book as Workbook
    Application.ScreenUpdating = False
Set book = ThisWorkbook
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xl*), *.xl*", _
MultiSelect:=True, Title:="Выберите файлы")
If TypeName(FilesToOpen) = "Boolean" Then
    MsgBox "Не выбрано ни одного файла!"
    GoTo ExitHandler
End If
x = 1
    Application.Visible = False
While x <= UBound(FilesToOpen)
    Workbooks.Open Filename:=FilesToOpen(x)
 
    book.Sheets(1).Copy  Before:=ActiveWorkbook.Sheets(1)  'переносит весь лист 1)ариант
    book.Sheets(1).Cells.Copy  ActiveWorkbook.Sheets(1).Range("a1") ' копирует данные на 1 лист 2) вариант
    ActiveWorkbook.Close savechanges:=True
    x = x + 1
Wend
 
ExitHandler:
    Application.ScreenUpdating = True
    Application.Visible = True
    Exit Sub
ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub
Изменено: Nordheim - 02.07.2017 16:23:54
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, отлично, всё работает, вы гений, огромное спасибо
 

Добрый день! Вопрос в похожей теме:

Помогите пожалуйста с макросом (с пояснением как потом запускать)))

В папке имеются однотипные файлы (наименования листов, шапки таблиц). Необходимо, не открывая файлов,  на листе с названием «стр2» найти в столбце А-«диапазон условия» слово «стол» и вставить  в соответствующую ячейку столбца В значение «999»

Для усложнения! Возможно ли вставить в соответствующую найденную ячейку в столбце А на листе с названием «стр1» ссылку на другой файл (путь):  "Поставка данных" , лист "Данные", ячейка "А1" (например)

Пример прилагаю.

Благодарю за помощь !

Изменено: Оксана Ry - 27.01.2026 10:26:04
 
Здравствуйте.
Сделал первую часть задания. Чтобы запустить макрос нужно кликнуть по кнопке "Обработка", а потом выбрать файлы в которых нужно менять значения. Выбрать несколько файлов можно нажав  Shift и потом не отпуская его кликать по нужным файлам мышкой.
 
Доброго!
) выдает ошибку на строку : sh.Select
 
Вам всегда нужно заменять значения на втором листе? Это к тому, что понял что нужно заменять значения на втором листе и жестко прописал это в макросе. Если листов в книге меньше двух то будет возникать ошибка.
 
нет, есть название листа, оно во всех файлах одинаковое - обзывается "стр2".
Листов больше (10-15). Нужно изменить именно на листе с опредленным названием, его очередность по счету в книге может меняться.
Изменено: Оксана Ry - 27.01.2026 10:24:34
 
тогда в процедуре replaceValues замените
Код
Set sh = wb.Sheets(2)
на
Код
Set sh = wb.Sheets("стр2")
Изменено: Aлeкceй - 27.01.2026 10:26:56 (на всякий случай приложил измененный файл)
 
Ураа, заработало !
СПАСИБО Большое !   :*  
 
Цитата
написал:
Для усложнения! Возможно ли вставить в соответствующую найденную ячейку в столбце А на листе с названием «стр1» ссылку на другой файл (путь):  "Поставка данных" , лист "Данные", ячейка "А1" (например)
Как узнать что в ячейку на листе "стр1" нужно записать ссылку? Т.е. как определить что в одну ячейку надо записать, а в другой оставить старое значение?
 
просто в найденную ячейку по условию вставить не прописанное значение (как было в примере  -999) а ссылку на другой лист (путь: папка, файл, лист, ячейка например  ='[новое значение-путь.xlsx]Лист1'!$A$1)

и еще возникла заминка по первому решению. Новое значение вставляет только целое число, а если нужно с десятыми, сотыми РУГАЕТСЯ (( Как правильно вписать новое значение с запятой ?
 
Здравствуйте.
Попробуйте написать так:
Код
aData(i, 2) = 999.45
Вечером сделаю так, что значение для замены будет настраиваемым.
 
Добрый день.
хорошо, Спасибо. Жду..
 
немного изменил порядок работы. теперь можете задать значение (для колонки А) при котором заменять значение в колонке В. значение которое нужно вставить тоже можно указать. проверял у меня работает с сотыми и десятыми.
насчет второй части не понял основного - при каком условии вставлять ссылку на ячейку, т.е. при каком значении в колонке А нужно вставлять ссылку в В.
 
Благодарю!!!  :D
по второй части, это без условия, просто другой вариант (другой файл) подстановки.
Есть файлы где нужно поменять значение (это первая часть). А в другой книге вставить ссылку (это вторая часть вопроса). Они не взаимосвязаны
2. К найденному значению в столбце "А" в столбце "В" вставить определенную ссылку  
 
Цитата
написал:
теперь можете задать значение (для колонки А)
Супер!
 
доделал. в архиве файлы: Замена_значений.xlsm - файл с макросами, замена данных.xlsx - файл где заменяются значения, Поставка данных.xlsx - файл откуда берется значение для подстановки на лист "стр1"
 
Большое СПАСИБО!!!!
Позвольте угостить Вас кофе (на карту, номер)
Страницы: 1
Читают тему
Наверх