Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка полей (столбцов) в нескольких файлах - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка полей (столбцов) в нескольких файлах (Макросы/Sub)
Вставка полей (столбцов) в нескольких файлах
Isa Дата: Среда, 13.04.2016, 09:32 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброе время!
Помогите, пожалуйста, в решении такой задачи.
Файл (Obrazec.xls), содержит только заголовки полей (Лист1). Полей может быть от 25 до 30.
В той же папке лежат файлы, в которых часть полей из файла Obrazec.xls может отсутствовать (исходные данные - на листах Old). Количество файлов может быть от 60 до 100, в примере - это File_1, File_2,File_3 и File_4.
Как в эти файлы вставить отсутстующие поля из файла Obrazec, чтобы получить результат, приведенный в файлах на листах New?
Такое преобразование файлов нужно перед сборкой данных в один файл.
К сообщению приложен файл: Insert_Fields.zip (19.2 Kb)
 
Ответить
СообщениеДоброе время!
Помогите, пожалуйста, в решении такой задачи.
Файл (Obrazec.xls), содержит только заголовки полей (Лист1). Полей может быть от 25 до 30.
В той же папке лежат файлы, в которых часть полей из файла Obrazec.xls может отсутствовать (исходные данные - на листах Old). Количество файлов может быть от 60 до 100, в примере - это File_1, File_2,File_3 и File_4.
Как в эти файлы вставить отсутстующие поля из файла Obrazec, чтобы получить результат, приведенный в файлах на листах New?
Такое преобразование файлов нужно перед сборкой данных в один файл.

Автор - Isa
Дата добавления - 13.04.2016 в 09:32
leskris Дата: Среда, 13.04.2016, 09:39 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 90
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016 (Office 365)
А названия столбцов по порядку идет?? как в образце? если нет, как вообще понять какое имя нужно присвоить столбцу?
 
Ответить
СообщениеА названия столбцов по порядку идет?? как в образце? если нет, как вообще понять какое имя нужно присвоить столбцу?

Автор - leskris
Дата добавления - 13.04.2016 в 09:39
Isa Дата: Среда, 13.04.2016, 09:47 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
leskris, Названия полей записаны в файле Obrazec и идут именно в таком порядке.
И в файлах данных нет полей, которых не было бы в Obrazec. И поля в файлах упорядочены.
Т.е., например Поле 2 всегда левее, например, Поля 6.
 
Ответить
Сообщениеleskris, Названия полей записаны в файле Obrazec и идут именно в таком порядке.
И в файлах данных нет полей, которых не было бы в Obrazec. И поля в файлах упорядочены.
Т.е., например Поле 2 всегда левее, например, Поля 6.

Автор - Isa
Дата добавления - 13.04.2016 в 09:47
Manyasha Дата: Среда, 13.04.2016, 12:46 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Isa, посмотрите такой вариант:
[vba]
Код
Sub addColumns()
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Выберите файлы"
        .InitialFileName = ThisWorkbook.Path
        .Filters.Clear
        .Filters.Add "Excel", "*.xls;*.xlsx;*.xlsm", 1: .AllowMultiSelect = True
        If .Show = False Then Exit Sub
        Set mainSh = ThisWorkbook.Sheets(1)
        For i = 1 To .SelectedItems.Count
            Set wb = Workbooks.Open(.SelectedItems(i))
            With wb.Sheets(1)
                j = 1
                Do While mainSh.Cells(1, j) <> ""
                    If .Cells(1, j) <> mainSh.Cells(1, j) Then
                        Columns(j).Insert xlToRight
                        .Cells(1, j) = mainSh.Cells(1, j)
                    End If
                    j = j + 1
                Loop
            End With
            wb.Close True
        Next i
    End With
End Sub
[/vba]
К сообщению приложен файл: Obrazec-1.xls (35.0 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеIsa, посмотрите такой вариант:
[vba]
Код
Sub addColumns()
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Выберите файлы"
        .InitialFileName = ThisWorkbook.Path
        .Filters.Clear
        .Filters.Add "Excel", "*.xls;*.xlsx;*.xlsm", 1: .AllowMultiSelect = True
        If .Show = False Then Exit Sub
        Set mainSh = ThisWorkbook.Sheets(1)
        For i = 1 To .SelectedItems.Count
            Set wb = Workbooks.Open(.SelectedItems(i))
            With wb.Sheets(1)
                j = 1
                Do While mainSh.Cells(1, j) <> ""
                    If .Cells(1, j) <> mainSh.Cells(1, j) Then
                        Columns(j).Insert xlToRight
                        .Cells(1, j) = mainSh.Cells(1, j)
                    End If
                    j = j + 1
                Loop
            End With
            wb.Close True
        Next i
    End With
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 13.04.2016 в 12:46
Isa Дата: Среда, 13.04.2016, 13:24 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Manyasha, проверил! Всё проработало "на ура". hands
Большое спасибо!
 
Ответить
СообщениеManyasha, проверил! Всё проработало "на ура". hands
Большое спасибо!

Автор - Isa
Дата добавления - 13.04.2016 в 13:24
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка полей (столбцов) в нескольких файлах (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!