Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Доброго дня всем.
Перерыл весь форум, не не нашел сообщений по этой теме. Делаю так **Первая книга в которую надо вставить XLRelek1=GetObject("","Excel.Application") XLRelek=XLRelek1.Workbooks.open(cFileNamexls) XLRelek.application.visible=.t. XLSheet1=XLRelek.Sheets(1) **Вторая книга из которой надо извлчь cFileNamexls2=ALLTRIM(spisflzip.put_file) XLRelek1=GetObject("","Excel.Application") XLRelek2=XLRelek1.Workbooks.open(cFileNamexls2) *** i=2 &&Найденная нужная строка в книге2 k=5303 && Первая чистая строчка первой книги - ставлю пока вручную. Дальше, наверное наращивать буду WITH XLSheet2.Range(XLSheet2.Cells(i,1),XLSheet2.Cells(i,11)) .select .Copy &&Срабатывает **Это разные команды, которые нашел на форуме - не могу определиться с синтаксисом *.Copy After:=Workbooks("cFileNamexls1").Sheets(Workbooks(cFileNamexls1).Worksheets.Count) *loexcel.Columns("D: D").Insert(xlToRight,xlFormatFromLeftOrAbove) *Sheets(cFileNamexls2).Copy After:=Workbooks("cFileNamexls1").Sheets(Workbooks(cFileNamexls1).Worksheets.Count) ENDWITH WITH XLSheet1.Range(XLSheet1.Cells(k,1),XLSheet1.Cells(k,11)) .insert && Не срабатывает **Это разные команды, которые нашел на форуме - не могу определиться с синтаксисом *.insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove *.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove *Sheets(cFileNamexls2).Copy After:=Workbooks("cFileNamexls1").Sheets(Workbooks(cFileNamexls1).Worksheets.Count) ENDWITH ------------------ Багавудин Мирзаев |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
А в чем вы видите принципиальную разницу между: 1) заполнением ячеек в одном и том же листе текущей книги; 2) заполнением ячеек в другом листе текущей книги; 3) и заполнением ячеек в каком-то листе другой книги? Исправлено 1 раз(а). Последнее : akvvohinc, 13.01.23 12:57 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Как узнать какая команда Word или Excel выполняет нужное действие
Перевод макроса Excel в синтаксис FoxPro Метод Range.Copy (Excel) Исправлено 1 раз(а). Последнее : Владимир Максимов, 13.01.23 13:35 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Копировать - вставить, наверное везде один и тот же просесс, а вот исполнение этого действия - разное. Просто в выбранном мной методике не работает Вставить. Вот и спрашиваю, как сделать правильно. ------------------ Багавудин Мирзаев |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Интересная ссылка. Но опять ВБ... Sheets("Sheet1").Select ' Find the last row of data FinalRow = Cells(Rows.Count, 1).End(xlUp).Row ' Loop through each row For x = 2 To FinalRow ' Decide if to copy based on column D ThisValue = Cells(x, 4).Value If ThisValue = "A" Then Cells(x, 1).Resize(1, 33).Copy Sheets("SheetA").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Sheet1").Select ElseIf ThisValue = "B" Then Cells(x, 1).Resize(1, 33).Copy Sheets("SheetB").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Sheet1").Select End If Next x ------------------ Багавудин Мирзаев |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
так в чем проблема - перекладываете на фокс и все )))
вот еще файлик с константами экселевскими вам пригодится - приложил |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
...
Исправлено 1 раз(а). Последнее : AndyNigmatec, 13.01.23 16:25 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Я же обозначил проблему выше: не могу переводить на язык фокса
|
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
да без проблем ))
не понял правда у вас в макросе почему так - Cells(x, 1).Resize(1, 33).Copy - но вам там на месте виднее
|
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Возможно, я чего-то не понимаю. Но, допустим, есть метод PasteSpecial объекта Range1, которым вы можете вставить предварительно скопированный другой объект Range2. Какая разница, на каком листе какой книги располагается Range1? |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Синтаксис применения PasteSpecial какой? loExcel.range.pasteSpecial loExcel.range.cells(NextRow, 1).pasteSpecial или какой-то другой? ------------------ Багавудин Мирзаев |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Не работает вставка.
PUBLIC loExcel, loSheet1, loExce2, loSheet2,FinalRow ***Открываем первый файл, куда будут копироваться строчки из второго и последующих файлов lcNameFile=(cFileNamexls) loExcel=CREATEOBJECT("EXCEL.APPLICATION") loExcel.Visible=.F. loExcel.EnableEvents=.T. loExcel.DisplayAlerts=.F. loExcel.Workbooks.Open(cFileNamexls) loExcel.application.visible=.t. lcWbName=JUSTFNAME(lcNameFile) loSheet1=loExcel.Workbooks(lcWbName).Sheets(1) ***Открываем второй файл cFileNamexls2=ALLTRIM(spisflzip.put_file) &&хранится в курсоре ? cFileNamexls2 lcNameFile=(cFileNamexls2) loExce2=CREATEOBJECT("EXCEL.APPLICATION") loExce2.Visible=.F. loExce2.EnableEvents=.T. loExce2.DisplayAlerts=.F. loExce2.Workbooks.Open(cFileNamexls2) loExce2.application.visible=.t. lcWbName2=JUSTFNAME(cFileNamexls2) loSheet2=loExce2.Workbooks(lcWbName2).Sheets(1) *Вычисляем последнюю строку в первом файле #DEFINE xlUp -4162 FinalRow = loSheet1.Cells(loSheet1.Rows.Count, 1).End(xlUp).Row ?FinalRow FOR x = 2 TO 24 &&(количество записей заранее не известно. Работаю через DO WHILE) ***Разные Команды **Если выполнено какое-то условие, копируем эту запиь в перву таблицу loSheet2.Cells(x, 1).Resize(1, 11).Copy && Работает NextRow =FinalRow+1 loSheet1.Cells(NextRow, 1).Select *loExcel.ActiveSheet.Paste &&Невозможно получить свойство Paste класса Workscheet *loExcel.ActiveSheet.PasteSpecial &&Невозможно получить свойство PasteSpecial класса Workscheet FinalRow=FinalRow+1 ENDFOR loExce2.application.quit RELEASE loExce2 Чем еще заменить вставку ------------------ Багавудин Мирзаев |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
вам не нужно создавать второй экземпляр эксель, работайте в одном ... тот код что я выше перевел из вашего vba я проверил - все работает
т.е. в вашем случае
создали экземпляр loExcel - так до конца с ним и работайте, далее открываем первый файл и делаем ссылку на первый лист
далее, открываем второй файл и делаем ссылку на первый лист в нем
далее, преобразуем немного ваш код
вроде все поправил, проверяйте )) Исправлено 8 раз(а). Последнее : AndyNigmatec, 13.01.23 21:58 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Могу лишь дополнить, что: 1) С книгой тоже можно (и гораздо удобнее) работать по ссылке:
loExcel.Workbooks(lcWbName2)не нужны. 2) все используемые команды .Select при работе из-под Фокса не нужны. То есть обращаться (работать с) к любому объекту Range (в любой книге и на любом листе) можно "напрямую" - без предварительного .Select. Таким образом, вместо 3 команд:
3) Если уж вы по какой-то причине (для какой-то цели) делаете RELEASE переменной loExcel, то чтобы быть последовательным, по той же причине следовало бы удалять и прочие подобные объектные ссылки, которые были связаны с Excel-объектом - loSheet1 и loSheet2. Исправлено 1 раз(а). Последнее : akvvohinc, 14.01.23 04:07 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
без предварительной активации .Select дальнейший loExcel.ActiveSheet.Paste не срабатывает вроде, тут тупо проверить нужно, а в целом - да, согласен ))
3) release loExcel - это скорее "на всякий случай", по идее по quit все должно выходить Исправлено 2 раз(а). Последнее : AndyNigmatec, 14.01.23 09:32 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
sphinx Сообщений: 31184 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Скорее всего наш коллега записывал макросы и адаптировал под Фокс 1-в-1. Обычно да, все без них стараются делать. ------------------ "Veni, vidi, vici!"(с) |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:1) Если текущим (активным) листом уже является тот, для которого выполняется Paste, то .Select для него не нужен. 2) Но я не предлагал пользоваться ActiveSheet.Paste - я использовал Range.PasteSpecial. Исправлено 1 раз(а). Последнее : akvvohinc, 14.01.23 12:55 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
В целом сработала следующая схема
XLSheet2.Cells(I, 1).Resize(1, 11).Copy NextRow =FinalRow+1 XLSheet1.Cells(NextRow, 1).PasteSpecial FinalRow=FinalRow+1 Правда, иногда на какой-нибудь записи второго объекта срабатывает ошибка на строчке XLSheet1.Cells(NextRow, 1).PasteSpecial При просмотре в режиме SUSPEND видно, что во втором объекте строчки обведены пунктироной линией (то есть XLSheet2.Cells(I, 1).Resize(1, 11).Copy сработал), а копируемые данные почти ничем не отличаются от других. Но ничего не поделаешь. Здесь придется какой-нибудь обработчик писать, чтобы как-то отметить невставленную запись для просмотра в ручном режиме. Без объявления двух укземпляров экселя, как советовал AndyNigmatec, тоже крайне неудобно. Ничего не видно, при возникновении ошибки невозможно открыть файл, чтобы посмотреть, на какой записи и что происходит. Не срабатывают loExcel.ActiveSheet.Paste. Тем не менее, я кое-чему научился благодаря помощи клуба. Большое спасибо всем за помошь. ------------------ Багавудин Мирзаев |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
На двух экземплярах экселя как раз и возможны ошибки при Copy-Paste ... Excel вещь в себе )))
по возникающей ошибке - посмотрите что это за ошибка, типа такого:
Исправлено 1 раз(а). Последнее : AndyNigmatec, 14.01.23 21:39 |
Re: Кировать строки с одной книги в другую книгу Excel | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
А есть чисто фоксовские методы? ------------------ Багавудин Мирзаев |
© 2000-2024 Fox Club  |