Здравствуйте! У меня есть много файлов екселя с расширением. xlsm. Нужно макрос, чтобы брал данные из Листа1 (Вихідні дані) из ячеек, что прописаны в макросе (ну на всякий случай напишу: D2, C10:H10, C12:D12, и из вкладки заказчик. не знаю как прописать в макросе) и писал их по порядку как в файле: Реестр.xls. Файл добавляю
Здравствуйте! У меня есть много файлов екселя с расширением. xlsm. Нужно макрос, чтобы брал данные из Листа1 (Вихідні дані) из ячеек, что прописаны в макросе (ну на всякий случай напишу: D2, C10:H10, C12:D12, и из вкладки заказчик. не знаю как прописать в макросе) и писал их по порядку как в файле: Реестр.xls. Файл добавляюanger47
anger47, не понятно почему Вы использовали форму, а не стандартный выпадающий список?
честно говоря я уже и сам не знаю, зачем сам себе жизнь усложнил, сначала хотел, что бы было красиво. а теперь понимаю...что форма пипец как проблем добавляет, хз подумаю мб и поменяю! кстати подскажите правильное расширение файла єкселя 2003 с макросами .xlm?
Почему ошибка на рисунке?
Quote (Jhonson)
anger47, не понятно почему Вы использовали форму, а не стандартный выпадающий список?
честно говоря я уже и сам не знаю, зачем сам себе жизнь усложнил, сначала хотел, что бы было красиво. а теперь понимаю...что форма пипец как проблем добавляет, хз подумаю мб и поменяю! кстати подскажите правильное расширение файла єкселя 2003 с макросами .xlm?anger47
Чтение информации из файла я бы реализовал немного по другому: [vba]
Code
Sub ertert() Dim i&, Fold$, f$, s$, vData As Variant Application.ScreenUpdating = False If Right(ThisWorkbook.Path, 1) <> "\" Then Fold = ThisWorkbook.Path & "\" Else Fold = ThisWorkbook.Path f = Dir(Fold & "*.xlsm*", vbNormal)
With Range("A6:F" & Cells(Rows.Count, 1).End(xlUp).Row + 1) .ClearContents Do While f <> "" If f <> ThisWorkbook.Name Then Application.Workbooks.Open Filename:=Fold & f, UpdateLinks:=True, ReadOnly:=True i = i + 1: .Cells(i, 1).Value = i .Cells(i, 2).Value = Sheets("Вихідні дані").Range("d2").Value .Cells(i, 3).Value = Sheets("Вихідні дані").Range("C10:H10").Value .Cells(i, 4).Value = Sheets("Вихідні дані").Range("C12:D12").Value .Cells(i, 5).Value = Sheets("Лист4").Range("d1").Value ActiveWorkbook.Close False End If f = Dir() Loop With .Resize(i) .Value = .Value End With End With Application.ScreenUpdating = True End Sub
[/vba] (не проверял, думаю должно работать!)
Quote (anger47)
правильное расширение файла єкселя 2003 с макросами .xlm?
Правильное расширение будет XLS.
Чтение информации из файла я бы реализовал немного по другому: [vba]
Code
Sub ertert() Dim i&, Fold$, f$, s$, vData As Variant Application.ScreenUpdating = False If Right(ThisWorkbook.Path, 1) <> "\" Then Fold = ThisWorkbook.Path & "\" Else Fold = ThisWorkbook.Path f = Dir(Fold & "*.xlsm*", vbNormal)
With Range("A6:F" & Cells(Rows.Count, 1).End(xlUp).Row + 1) .ClearContents Do While f <> "" If f <> ThisWorkbook.Name Then Application.Workbooks.Open Filename:=Fold & f, UpdateLinks:=True, ReadOnly:=True i = i + 1: .Cells(i, 1).Value = i .Cells(i, 2).Value = Sheets("Вихідні дані").Range("d2").Value .Cells(i, 3).Value = Sheets("Вихідні дані").Range("C10:H10").Value .Cells(i, 4).Value = Sheets("Вихідні дані").Range("C12:D12").Value .Cells(i, 5).Value = Sheets("Лист4").Range("d1").Value ActiveWorkbook.Close False End If f = Dir() Loop With .Resize(i) .Value = .Value End With End With Application.ScreenUpdating = True End Sub
[/vba] (не проверял, думаю должно работать!)
Quote (anger47)
правильное расширение файла єкселя 2003 с макросами .xlm?
Jhonson, все работает спасибо, а возможно сделать так, что бы не было открытия файла:
Quote (Jhonson)
Open Filename:=Fold
? а то на другом компе с установленным 2003 экс, постоянный вопрос преобразования файла, а если таких файлов больше 20 шт, ето тоже занимает время. спс за понимание
Jhonson, все работает спасибо, а возможно сделать так, что бы не было открытия файла:
Quote (Jhonson)
Open Filename:=Fold
? а то на другом компе с установленным 2003 экс, постоянный вопрос преобразования файла, а если таких файлов больше 20 шт, ето тоже занимает время. спс за пониманиеanger47
ИМХО В 2003 офисе файлы XLSM, не запуская их, прочитать не удастся! Таким образом или сохраняем все файлы в формате XLS, или читаем файлы с явным открытием и закрытием.
Quote (anger47)
все равно запускает файлы
ИМХО В 2003 офисе файлы XLSM, не запуская их, прочитать не удастся! Таким образом или сохраняем все файлы в формате XLS, или читаем файлы с явным открытием и закрытием.Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Сообщение отредактировал Jhonson - Вторник, 24.07.2012, 08:52