|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
04.02.2009, 13:34 | #11 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Wb.Worksheets("Лист1").Range("a2:e5").Copy ThisWorkbook.Worksheets(1).Range("A 1") У Вас во всех открываемых книгах присутствует лист с таким именем? |
|
04.02.2009, 13:34 | #12 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Чем шире угол зрения, тем он тупее.
|
|
04.02.2009, 13:47 | #13 |
Пользователь
Регистрация: 28.01.2009
Сообщений: 12
|
а то что он копирует из всех перебираемых файлов поверх ранее скопированного это как можно обойти?
|
04.02.2009, 13:49 | #14 |
Пользователь
Регистрация: 28.01.2009
Сообщений: 12
|
Да. есть. не из-за кодировки ошибка. может он плохо понимает сетевые диски. если обрабатывать файлы с локального диска, то ошибки не возникает.
|
04.02.2009, 13:53 | #15 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Но Вы же ни слова не написали про то, откуда и куда должны копироваться данные... |
|
04.02.2009, 14:03 | #16 |
Пользователь
Регистрация: 28.01.2009
Сообщений: 12
|
Из одного файла в другой. не ради же процесса) сорри за мутные пояснения. у меня уже мозг кипит.
как можно изменить Wb.Sheets(1).Range("A1:B10").Copy ThisWorkbook.Sheets(1).Range("A1") добавив условие "если ячейка не пустая"? и попутный вопрос (все равно ж спрашивать придется)): как добавить переменную с информацией о том, из какого файла был массив скопирован? т.е. нужно еще добавить переменную, в которую бы заносились дополнительные кодирующие данные (например имя файла), чтобы скопированные диапазоны не были перепутаны. |
04.02.2009, 14:10 | #17 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Вы просто не сформулировали задачу. Надо примерно так: Из каждого найденного в выбранной папке файла с листа Лист2 копируем диапазон d5:j32, и производим вставку на Лист1 текущего документа(из которого запускается макрос), начиная с первой пустой ячейки в строке 4. Над вставленным блоком (в 3-ю строку) пишем имя файла, из которого взяты данные. Когда сформулируете задачу подобным образом, тогда и получите ответ. |
|
04.02.2009, 14:50 | #18 |
Пользователь
Регистрация: 28.01.2009
Сообщений: 12
|
Из каждого найденного в выбранной папке файла с листа Лист2 копируем диапазон d5:j32, и производим вставку на Лист1 текущего документа(из которого запускается макрос), начиная с первой пустой ячейки.
В колонке справа от вставленного диапазона вносим имя исходного файла для каждой вставленной строки |
04.02.2009, 20:33 | #19 |
Пользователь
Регистрация: 28.01.2009
Сообщений: 12
|
реббяяяята!! посмотрите пожалуйста что не правильно? почему не работает?
по идее макрос должен перебирать файлы в папке, копировать из файла заполненный диапазон и вставлять этот диапазон в рабочую книгу под уже имеющимся массивом. почему не работает? врод ж все пердусмотрела(
Sub КопированиеИзФайлов() Application.ScreenUpdating = False Dim WB As Workbook 'определяем перемнную для копируемого файла MyPath = InputBox("Enter path", "Path", CurDir) 'просим пользователя ввести путь к нужным файлам If Dir(MyPath, vbDirectory) = "" Then MsgBox "Такая папка не найдена", vbCritical: Exit Sub 'если папка не найдена, то выдаем сообщение и прерываем процесс If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" 'если нет слеша в конце пути добавляем Filename = Dir(MyPath & "*.xls") 'составляем путь и шаблон имени файла для перебора компандой Dir Dim coll As New Collection 'создаем коллекцию, в которую надо довавить имена файлов Do While Filename <> "" 'пока имя в файла не обратится в пустую строку добавляем файлы в коллекцию coll.Add MyPath & Filename Filename = Dir() Loop If coll.Count = 0 Then MsgBox "В выбранной папке не обнаружены файлы Excel", vbCritical: Exit Sub 'если в папке нет нужных файлов, прерываем процесс For Each file In coll 'устанавливаем условия для копирования Set WB = Workbooks.Open(file) 'задаем рабочей книгу, которая открывается по ссылке из коллекции Dim name As String name = InputBox("Enter sheet name", "Sheet", "Лист1") Do While diap1 <> "" c = c + 1 diap1 = WB.Worksheets(1).Range(Cells(1, 1), Cells(c, 1)) Loop 'копировать будем массив до последней не пустой ячейки Do While diap2 <> "" a = a + 1 diap2 = ThisWorkbook.Worksheets(1).Range(Ce lls(a, 1)) Loop 'вставлять будем в последнюю пустую ячейку If Not WB Is Nothing Then WB.Worksheets(1).Range(Cells(1, 1), Cells(c, 1)).Copy ThisWorkbook.Worksheets(1).Range(Ce lls(a, 1)).Paste End If 'усли все впорядке то производим копирование ThisWorkbook.Worksheets(1).Range(Ce lls(a, 1), Cells(b, 1)) = 3 'приписываем диапазону ячеек значения равные названию файла Do While diap3 <> "" b = b + 1 diap3 = ThisWorkbook.Worksheets(1).Range(Ce lls(a, 1)) Loop 'присваиваем их от начала вставленного диапазона до конца WB.Close False 'закрываем книгу из которой копировалось Next file 'берем следующий файл из коллекции End Sub |
04.02.2009, 21:13 | #20 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Лучше как-то так:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как алгоритм перевести в код VBA | valerij | Microsoft Office Excel | 18 | 29.05.2008 01:32 |