Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Сбор данных из нескольких файлов
 
Добрый день
Продолжение темы.
Код по копированию рабочий, но есть один нюанс. Если диапазон для копирования указывать со столбца "B" все копирует нормально, но если указать со столбца "A" то копирует только первые 4-5 строк с каждого файла, а последний копирует полностью. Пока сам не могу разобраться в чем дело.

Код
Sub КопироватьДанные()
    ' объявляем переменные
    Dim ЛистКопирования$, ДиапазонКопирования$, ЛистВставки$, ДиапазонВставки$, lLastRow As Long
    ЛистКопирования$ = Sheets("Настройки").[D7]    ' берём из ячейки
    ДиапазонКопирования$ = Sheets("Настройки").[D8]    ' берём из ячейки
    ЛистВставки$ = Sheets("Настройки").[D9]    ' берём из ячейки
    ДиапазонВставки$ = Sheets("Настройки").[D10]    ' берём из ячейки
    Dim RangeList As Variant
    RangeList = Application.WorksheetFunction.CountA([D15:D115])
    Dim i As Long
    Worksheets(ЛистВставки).Cells.ClearContents 'очистить область вставки
    
    With Application: .ScreenUpdating = False: .DisplayAlerts = False: .Calculation = xlManual: End With
        For i = 1 To RangeList
            'Открываем другой файл'
            Dim WB As Workbook, Sht As Worksheet, Rng As Range
            Set WB = Application.Workbooks.Open(Workbooks("Сбор данных (П-1).xlsm").Sheets("Настройки").Cells(i + 14, 4), Password:="")
            Set Sht = WB.Sheets(ЛистКопирования)
            Set Rng = Sht.Range(ДиапазонКопирования)
            'определили последнюю заполненную ячейку
            lLastRow = ThisWorkbook.Sheets(ЛистВставки).Cells(Rows.Count, ДиапазонВставки).End(xlUp).Row
            Rng.Copy
            ThisWorkbook.Sheets(ЛистВставки).Range(ДиапазонВставки & lLastRow + 1).PasteSpecial xlPasteValues
            WB.Close False
            Set WB = Nothing: Set Sht = Nothing: Set Rng = Nothing
        Next
    With Application: .ScreenUpdating = True: .DisplayAlerts = True: .Calculation = xlCalculationAutomatic: End With
    'Set sht = Nothing
    ThisWorkbook.Sheets(ЛистВставки).Activate
End Sub
Сбор данных из нескольких файлов
 
Цитата
DANIKOLA написал:
Здравствуйте. Смотрите, пробуйте.
———
P.S. Power Query легко решает Вашу задачу.
Добрый день.
Ваше решение работает, но оно копирует всё, форматы, формулы, а мне нужны только значения.
Смотрел про метод "Copy" у него вроде нельзя указать копирование и вставку значениями
Сбор данных из нескольких файлов
 
Да можно и через диалоговое окно, но мой вариант позволит собрать данные если файлы лежат в разных папках.
Для этого сделать поиск по одной папке, потом по другой, список найденного не сбрасывается
Заполнение ячеек данными из другой книги
 
Цитата
dew1582 написал:
web-master, ну точно так же данным файлом не только я буду пользоваться и Power Query не подойдет так как не у всех может быть установлен
Power Query там нет
Заполнение ячеек данными из другой книги
 
В этой теме аналогичная задача решалась
Эта тема
Сбор данных из нескольких файлов
 
Цитата
DANIKOLA написал:
Здравствуйте. Смотрите, пробуйте.
———
P.S. Power Query легко решает Вашу задачу.

Спасибо огромное!
Power Query буду пробовать, но так как данным файлом не только я буду пользоваться, то Power Query не подойдет так как не у всех может быть установлен
Изменено: web-master - 12.01.2023 07:32:49
Как сделать так что бы при вставке дополнительных строк в формуле ссылающейся на эти строки не менялось значение?, Как сделать так что бы при вставке дополнительных строк в формуле ссылающейся на эти строки не менялось значение?
 
С примером будет легче думать.
А вообще закреплять формулу $
Изменено: web-master - 10.01.2023 16:31:11
Подставить в фразы значения вместо переменных из соседних столбцов
 
Формулой
Как в коллекции перебор элементов сделать согласно сортировки по имени в папке?
 
Цитата
Тимофеев написал:
Но почему то сортировка отличается если от А до Я в Excel и по имени в папке
В программировании есть понятие "человекупонятная сортировка", все языки программирования при работе с массивами этого понятия не придерживаются если в имени файлов присутствуют цифры, тем более с разделителями. Выход - изменить названия файлов, не применять цифры
Изменено: web-master - 10.01.2023 11:23:46
Как в коллекции перебор элементов сделать согласно сортировки по имени в папке?
 
Перед выводом результатов данные записываются в массив Array, затем из него выводятся, ищите информацию по сортировка массивов.
Возможно информация отсюда чем то поможет Пример сортировки
Изменено: web-master - 10.01.2023 11:11:04
Сбор данных из нескольких файлов
 
Всем добрый день.
Прошу помощи в следующем.
Есть основной файл который просматривает определенную папку, и если в ней есть файлы подходящие под условие он формирует список таких файлов, затем при нажатии на кнопку "Копирование", макрос копирует данные из найденных файлов из определенного диапазона на лист в основном файле, но сейчас макрос копирует только первые столбцы необходимых данные, а нужно весь диапазон который указан в условие "Диапазон копирования".
Может кто-то поможет дописать необходимые условия чтобы все работало правильно.
Файлы во вложении
VBA: как правильно указать ссылку на диапазон ячеек листа?
 
Karataev, Спасибо! Буду знать.
VBA: как правильно указать ссылку на диапазон ячеек листа?
 
Здравствуйте, проблема в следующем: создал форму для добавления материалов в базу, объявил глобальные переменные в отдельном модуле, но все равно при добавлении появляется ошибка "Method 'Range' of object '_Global failed". В чем еще может быть проблема?
Просмотр диапазона на точное соответствие.
 
Здравствуйте.
Возникла следующая проблема.
Сейчас в vba использую следующий код
Код
If Target = "Н" Or Target = "н" Then
    Set TargetGlobal = Target
    From_Unit.Show
    End If

Который, если в диапазоне появляется буква "н" открывает определенную форму.
Как сделать так чтобы он искал по точному соответствию?
Так как сейчас если вписать любой текст где присутствует буква "н" код тоже сработает, а этого не надо
Не помещается формула в проверку данных
 
Вот файл примера, в красном диапазоне расписал какие значения нужно разрешить, какие запретить. Значения нужно вводить в сером диапазоне. Вверху формула которая сейчас получилась
Не помещается формула в проверку данных
 
все равно длинная, 316 символов, а нужно 255 с "="
Не помещается формула в проверку данных
 
Цитата
МВТ написал:
Кросс
и?
Не помещается формула в проверку данных
 
Здравствуйте,столкнулся с такой проблемой, делаю проверку чтобы нельзя было вводить в ячейку определенные значения, но когда вставляю формулу в проверку данных, она не вставляется, возможно превышен лимит длины формулы, как можно этот лимит обойти??
Сейчас формула такая:
ИЛИ(И(НЕ(ЕОШИБКА(НАЙТИ("/";E11;1)));ЕСЛИ(НЕ(ЕОШИБКА(НАЙТИ("/";E11;1)));ИЛИ(ЕСЛИ(ДЛСТР(E11)=3;И(ЗНАЧЕН(ЛЕВСИМВ(E11;1))>=ЗНАЧЕН(ПРАВСИМВ(E11;1));ЗНАЧЕН(ПРАВСИМВ(E11;1))<=8));ЕСЛИ(ДЛСТР(E11)=4;И(ЗНАЧЕН(ЛЕВСИМВ(E11;2))<=24;ЗНАЧЕН(ПРАВСИМВ(E11;1))<=8)))));НЕ(ЕОШИБКА(ПОИСКПОЗ(E11;Справочник!$A$1:$A$21;0)));ЕСЛИ(ЕЧИСЛО(ЗНАЧЕН(E11));ЗНАЧЕН(E11)<=24))

Она означает следующее: в ячейку можно вводить только: значения из диапазона
"Справочник!$A$1:$A$21", все цифры от 1 до 24, комбинации вида "8/7",
"8/8" .... (но в эти комбинациях первая цифра не может быть меньше
второй, первая цифра не может быть больше 24, и вторая цифра не может
быть больше 8
Но при этом формат ячейки должен оставаться текстовым (это для справки)
Печать настраиваемая макросом
 
Здравствуйте, помогите реализовать такой функционал:
В файле таблица (что-то) типа табеля, при нажатии кнопки печать открывается окно, в котором можно будет выбирать какие именно фамилии (строки) печатать, список в окне должен расширяться и прокручиваться в зависимости от количества фамилий. Серой заливкой та область которую можно настраивать при печати, а зеленой та которая печатается всегда.
И в окне настройки если галочка стоит на "все" то выделены соответственно все значения, если галочку убрать то снимается выделение со всех
Получить значение из Intersect().Address
 
Спасибо, у вас мне действительно помогли!!!
Получить значение из Intersect().Address
 
и еще один вопрос.
Если я на листе выделяю диапазон и наживаю DELETE то выдает ошибку Run-time error 13, и выделяет строку If Target = "ДЦ" Or Target = "дц" Then
Но если удалять ячейки по одной, то все нормально. Как это можно решить?
Получить значение из Intersect().Address
 
ikki,огромное спасибо!!!
Получить значение из Intersect().Address
 
Можете подсказать как и где ее правильно объявить, просто недавно начал работать с VBA
Получить значение из Intersect().Address
 
Так и думал
Теперь оказывается проблема в другом
Приведу весь пример.
Код на целевом листе

Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [F10:AJ209]) Is Nothing Then
        If Target = "ДЦ" Or Target = "дц" Then
        From_Unit.Show
        End If
End If
End Sub
 
Просматривает диапазон, и если в нем появилось значение
Код
 "ДЦ"
то показываем форму, код которой такой

Код
Option Explicit
Private Sub Submit_OK_Click()
If Box_Unit.Text <> "" Then
    Dim kz&
    kz = Sheets("ДЦ").UsedRange.Rows.Count + 1
    Range("ДЦ!A" & kz).Value = Intersect(Columns(3), Target.EntireRow).Value
    Range("ДЦ!B" & kz).Value = Box_Unit.Value
    Range("ДЦ!C" & kz).Value = ActiveSheet.Name
    Range("ДЦ!D" & kz).Value = Intersect(Rows(7), Target.EntireColumn).Value
    
    Me.Hide
End If
End Sub
 
Так вот здесь редактор ругается на Target, потому что он не определен.
Как его сделать видимым для формы?
Получить значение из Intersect().Address
 
Есть в макросе такой код Intersect(Rows(3), Target.EntireColumn).Address который возвращает абсолютный адрес ячейки, подскажите, как из этого вернуть значение ячейки?
Страницы: 1
Наверх