Страницы: 1
RSS
Копировать листы все кроме
 
Помогите, пожалуйста, поправить код в файле (SAM Format change_example)

Есть 3 файла -
1. Файл с макросом (SAM Format change_example)
2. Файл, в который нужно вставить
3. Файлы (все из папки), из которых нужно скопировать

Задача: нужно открыть каждый файл из указанной папки (с этим вроде проблем нет), скопировать все листы, которые не называются:
      If Sheets(i2).Name <> "Main" _
      Or Sheets(i2).Name <> "SAM" _
      Or Sheets(i2).Name <> "AUREUS DEAL" _


все бы ничего, но мой макрос копирует как раз таки все что не нужно, а что нужно игнорирует (((
 
Условие Or(или) работает по принципу, если сработает хотя бы одно из условий. Т.е. условие <>1 или <>2 пропустит 2, т.к. сработает <>1.
Лучше написать =1 или =2 и добавить Else

Замените <> на = и исправьте конструкцию If then else

Сам файл не смотрел... форумчане дополнят ответ.
Изменено: Marat Ta - 06.03.2021 08:00:46
 
Код
       If Sheets(i2).Name = "Main" _
       Or Sheets(i2).Name = "SAM" _
       Or Sheets(i2).Name = "AUREUS DEAL" _
       Or Sheets(i2).Name = "Deal for pricing" _
       Or Sheets(i2).Name = "FX" _
       Or Sheets(i2).Name = "PL" _
       Or Sheets(i2).Name = "Ship-to data" _
       Or Sheets(i2).Name = "GUARDRAILS by Sold-to" _
       Or Sheets(i2).Name = "ProdName" _
       Or Sheets(i2).Name = "rules" _
       Or Sheets(i2).Name = "STL&Distr" _
       Or Sheets(i2).Name = "Project for pricing" _
       Or Sheets(i2).Name = "Projects" _
       Or Sheets(i2).Name = "LPC" _
       Then
       Else
            Sheets(i2).Copy After:=Workbook(sModel).Sheets(Workbook(sModel).Sheets.Count)
       End If
 
Наверно так
Изменено: Евгений Смирнов - 06.03.2021 07:29:18
 
Он начал копировать нужные листы, НО в 11ти экземплярах и при чем только 1 лист из 2х (( Как будто он вовремя не остановился
Код
For i2 = 1 To Sheets.Count
    If Sheets(i2).Name = "Main" _
    Or Sheets(i2).Name = "SAM" _
    Or Sheets(i2).Name = "AUREUS DEAL" _
    Or Sheets(i2).Name = "Deal for pricing" _
    Or Sheets(i2).Name = "FX" _
    Or Sheets(i2).Name = "PL" _
    Or Sheets(i2).Name = "Ship-to data" _
    Or Sheets(i2).Name = "GUARDRAILS by Sold-to" _
    Or Sheets(i2).Name = "ProdName" _
    Or Sheets(i2).Name = "rules" _
    Or Sheets(i2).Name = "STL&Distr" _
    Or Sheets(i2).Name = "Project for pricing" _
    Or Sheets(i2).Name = "Projects" _
    Or Sheets(i2).Name = "LPC_old" _
    Or Sheets(i2).Name = "LPC" Then
    Else: Sheets(i2).Copy After:=Workbooks(sModel).Sheets(Workbooks(sModel).Sheets.Count)
       End If
Next i2
Изменено: Мария - - 06.03.2021 09:13:20
 
Мария -, из каждого файла все листы скопируется, за исключением указанных вами имен листов. Если есть одинаковые названия листов... надо смотреть на примере. Приложите файлы-примеры.
Изменено: Marat Ta - 06.03.2021 10:04:25
 
Названия части листов в 2х файлах одинаковые и в файле, из которого копируем, есть листы отличные по названию (например, NL_2021-03). Вот как раз его и нужно скопировать.
Код это делает, только он его вставляет 11 раз. А если листов таких не 1, а 2, то второй он вообще игнорирует и не копирует.
 
Макрос все правильно делает строго по поставленной вами задачей
Страницы: 1
Наверх