Здравствуйте! Просьба о помощи. Я новичок, как смог так и написал макрос для извлечения данных из одной книги, в другую - Трассовка ЮКМ (2 нитка), сохранение там в определенных столбцах для дальнейшего раскидывания данных по таблице с помощью формул. Соглашусь, что макрос выглядит громоздко и можно было это все оформить быстро и по другому, но как смог так и сделал, главное работает. Вопрос в том, что так и не смог найти элементарного – в названии книги, из которой извлекаются данные, регулярно меняется дата и может меняться часть текста. Вставляю в папку этот присылаемый мне файл сам день через день. Пытался с помощью dim, но так и не получилось, не смог понять куда чего ставить. И также у этой книги может меняться расширение .xls .xlsx .xlsm. Еще не получилось прикрутить формулу ЕСЛИ(ЕЧИСЛО(ПОИСК("AN";C3));"A";"O") в столбец G, поставил вручную. PS И еще, иногда требуется извлечение так, чтобы все располагалось снизу вверх, как бы наоборот – вверху стояло сначала нижнее значение и так далее. И так по всем столбцам, кроме столбца А – нумерации. Старался максимально понятно выразиться. Буду благодарен за решение этого вопроса.
Здравствуйте! Просьба о помощи. Я новичок, как смог так и написал макрос для извлечения данных из одной книги, в другую - Трассовка ЮКМ (2 нитка), сохранение там в определенных столбцах для дальнейшего раскидывания данных по таблице с помощью формул. Соглашусь, что макрос выглядит громоздко и можно было это все оформить быстро и по другому, но как смог так и сделал, главное работает. Вопрос в том, что так и не смог найти элементарного – в названии книги, из которой извлекаются данные, регулярно меняется дата и может меняться часть текста. Вставляю в папку этот присылаемый мне файл сам день через день. Пытался с помощью dim, но так и не получилось, не смог понять куда чего ставить. И также у этой книги может меняться расширение .xls .xlsx .xlsm. Еще не получилось прикрутить формулу ЕСЛИ(ЕЧИСЛО(ПОИСК("AN";C3));"A";"O") в столбец G, поставил вручную. PS И еще, иногда требуется извлечение так, чтобы все располагалось снизу вверх, как бы наоборот – вверху стояло сначала нижнее значение и так далее. И так по всем столбцам, кроме столбца А – нумерации. Старался максимально понятно выразиться. Буду благодарен за решение этого вопроса.stns
Упростил свой вопрос и книги с данными. Хотябы такую задачу разрешить.
Из "Книга1 31.07.2023.xlsx" копируем в "Книга2" через один столбец. Нельзя ли упростить макрос? И если файл потом станет называться "Книга1 01.08.2023", а потом "Книга1 15.08.2023", как заставить работать макрос?
[vba]
Код
Sub test()
'Открываем файл с которого нужно скопировать данные Workbooks.Open Filename:="C:\Макрос\Книга1 31.07.2023.xlsx" 'Скопировать нужный диапазон в открывшейся книге на листе 1 Workbooks("Книга1 31.07.2023.xlsx").Worksheets("Лист1").Range("A8:A25").Copy 'Активируем нужную нам книгу Workbooks("Книга2.xlsm").Activate 'Выделяем и вставляем скопированные данные в ячейку A3 ActiveWorkbook.Worksheets("Лист1").Range("A3").Select ActiveSheet.Paste
Workbooks("Книга1 31.07.2023.xlsx").Worksheets("Лист1").Range("K8:K25").Copy Workbooks("Книга2.xlsm").Activate ActiveWorkbook.Worksheets("Лист1").Range("F3").Select ActiveSheet.Paste End Sub
[/vba]
Упростил свой вопрос и книги с данными. Хотябы такую задачу разрешить.
Из "Книга1 31.07.2023.xlsx" копируем в "Книга2" через один столбец. Нельзя ли упростить макрос? И если файл потом станет называться "Книга1 01.08.2023", а потом "Книга1 15.08.2023", как заставить работать макрос?
[vba]
Код
Sub test()
'Открываем файл с которого нужно скопировать данные Workbooks.Open Filename:="C:\Макрос\Книга1 31.07.2023.xlsx" 'Скопировать нужный диапазон в открывшейся книге на листе 1 Workbooks("Книга1 31.07.2023.xlsx").Worksheets("Лист1").Range("A8:A25").Copy 'Активируем нужную нам книгу Workbooks("Книга2.xlsm").Activate 'Выделяем и вставляем скопированные данные в ячейку A3 ActiveWorkbook.Worksheets("Лист1").Range("A3").Select ActiveSheet.Paste
Workbooks("Книга1 31.07.2023.xlsx").Worksheets("Лист1").Range("K8:K25").Copy Workbooks("Книга2.xlsm").Activate ActiveWorkbook.Worksheets("Лист1").Range("F3").Select ActiveSheet.Paste End Sub
Private Sub UserForm_Activate() Dim arr() a = TextBox1.Value b = Dir(a & "\*.xls*") c = ThisWorkbook.Name n = 0 i = 1 Do While b <> "" ReDim Preserve arr(n) If b <> c Then arr(n) = b n = n + 1 i = i + 1 End If b = Dir Loop ListBox1.List = arr() End Sub Private Sub CommandButton1_Click() x = ListBox1.ListIndex If x = -1 Then MsgBox "Файл не выбран!" Else a = TextBox1.Value b = ListBox1.Value Workbooks.Open Filename:=a & b Range("C5:C25,E5:E25,G5:G25,I5:I25,K5:K25").Copy ThisWorkbook.Sheets("Лист1").Range("a3") Workbooks(b).Close False Unload UserForm1 End If End Sub
[/vba]
[vba]
Код
Sub test() UserForm1.Show End Sub
[/vba]
апдэйт, исправил [vba]
Код
Private Sub UserForm_Activate() Dim arr() a = TextBox1.Value b = Dir(a & "\*.xls*") c = ThisWorkbook.Name n = 0 i = 1 Do While b <> "" ReDim Preserve arr(n) If b <> c Then arr(n) = b n = n + 1 i = i + 1 End If b = Dir Loop ListBox1.List = arr() End Sub Private Sub CommandButton1_Click() x = ListBox1.ListIndex If x = -1 Then MsgBox "Файл не выбран!" Else a = TextBox1.Value b = ListBox1.Value Workbooks.Open Filename:=a & b Range("C5:C25,E5:E25,G5:G25,I5:I25,K5:K25").Copy ThisWorkbook.Sheets("Лист1").Range("a3") Workbooks(b).Close False Unload UserForm1 End If End Sub
Nic70y, спасибо большое! Примерно понятно. Пытался сам это сделать, стопорится на ListBox1.List = arr(), пытаюсь скачать из вашего сообщения файл 1533819.xlsm, написано - такой страницы не существует. Нельзя ли продублировать.
Nic70y, спасибо большое! Примерно понятно. Пытался сам это сделать, стопорится на ListBox1.List = arr(), пытаюсь скачать из вашего сообщения файл 1533819.xlsm, написано - такой страницы не существует. Нельзя ли продублировать.stns