|
|
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Возникла необходимость произвести экспорт данных из одного файла excel в другой.С VBA знаком поскольку постольку,т.е. чайник. Как,например,ячейку А1 из файла my.xls экспортировать (т.е. скопировать) в А1 файла d.xls. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 03:52 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Искать пробовал?? http://www.sql.ru/forum/actualthread.aspx?tid=447131 Не подойдет???? С уважением, Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:46 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
GBHВозникла необходимость произвести экспорт данных из одного файла excel в другой.С VBA знаком поскольку постольку,т.е. чайник. Как,например,ячейку А1 из файла my.xls экспортировать (т.е. скопировать) в А1 файла d.xls. Заранее спасибо. Для этого VBA не нужен Файл d.xls - Ячейка A1 ='[my.xls]myList'!$A$1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 11:43 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. gjghjc Искать пробывал,но даже не знаю как вопрос сформулировать :-( Это я видел.Дело в том,опять же повторюсь,c VBA тяжело,а до субботы надо это сделать. Поэтому попросил,чтобы показали легкий пример,как копировать хотябы одну ячейку.А дальше,если возн7икнут вопросы,то опять сюда :-) Deggasad Я просто хочу сделать форму с кнопочкой и чтобы при нажатии данной кнопочки производился экспорт.Причем изначально кол-во строк исходного документа не известно,хочу задать цикл и чтобы в этом цикле менялись номера ячеек. Так что если всё таки кто-то для начала покажет как экспортнуть хотя бы одну ячейку буду очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 13:37 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
1) А вторая книга открыта или закрыта??? 2) Часто выручает ЗАПИСЬ МАКРОСА. делаешь что нужно ручками, при этом записываешь, потом смотришь и кумекаешь что к чему, справку читаешь и книжки + инет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:12 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Deggasad Запись макроса не вариант.Т.к. кол-во строк в таблице откуда делается експорт не известен,а также не известно по каким строчкам надо делать подитог.Вот я и хочу загнать експорт в цикл,до конца файла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:17 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Тогда алгоритм типа такого... Открой обе книги, а этот код помести в личную книгу макросов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Cells (строка, столбец) Думаю как организовать цикл поймешь сам Это для начала.... потом можно будет немного усложнить и сделать код поэффективней... Код: plaintext 1. 2. 3. 4. Попробуй и его Теперь что касается цикла "до конца файла"... Перебирать 65535 строк и 255 столбцов и искать в них значения не совсем логично. Посмотри в хелпе по VBA как работает UsedRange. Вобщем дерзай! С уважением, Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:37 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Например копировать значения диапазона. Код: plaintext 1. Код: plaintext 1. 2. Обе книги должны быть открыты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 15:20 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Ошибка была в определении последней строки Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 15:21 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
А если в диапазоне будут пустые строки? И чего то у меня ругается на код по определению последней строки а вот так Код: plaintext 1. С уважением, Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 15:52 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
gjghjcА если в диапазоне будут пустые строки? И чего то у меня ругается на код по определению последней строки а вот так Код: plaintext 1. С уважением, Николай. Я бы всё-таки советовал так, возможно это предрассудок... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:03 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
n = ActiveSheet.cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row О! заработало! И пустые строки этому коду побоку и по скорости супротив моего быстрее :) (2Deggasad спасибо. Добавлю в свою копилочку :) ) С уважением, Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:34 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
gjghjcn = ActiveSheet.cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row О! заработало! И пустые строки этому коду побоку и по скорости супротив моего быстрее :) (2Deggasad спасибо. Добавлю в свою копилочку :) ) С уважением, Николай. Тем более можно можно искать в любом указанном диапазоне, либо в определённом столбце, строке. Можно сразу ячейку назначать, а не число например Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:03 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Добил... :) Контрольный топик.. в голову. :) Извините за офтопик. С уважением, Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:08 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Ой!Как много всего! Огромное всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 19:19 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Вот что у меня получилось для копирования одного диапозона ячеек из одного файла в другой. Windows("my.xls").Activate Range("A3:s3").Select Selection.Copy Windows("d.xls").Activate Range("A27:S27").Select ActiveSheet.Paste Честно говоря думал,что просто сделаю цикл,который будет менять значения диапозонов,т.е. поставлю Ai:Si, и буду менять значение i.Только что-то,видимо,не то я дуиал.:-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:14 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
GBHВот что у меня получилось для копирования одного диапозона ячеек из одного файла в другой. Windows("my.xls").Activate Range("A3:s3").Select Selection.Copy Windows("d.xls").Activate Range("A27:S27").Select ActiveSheet.Paste Честно говоря думал,что просто сделаю цикл,который будет менять значения диапозонов,т.е. поставлю Ai:Si, и буду менять значение i.Только что-то,видимо,не то я дуиал.:-( Я тебе ранее уже писал не Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:25 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Спасибо большое! Но я же тоже писал,что дуб дубом в vba :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:29 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Я понимаю,что это супер наглость,но нельзя написать этот цикл? Вот моё копирование Windows("my.xls").Activate Range("A3:s3").Select Selection.Copy Windows("d.xls").Activate Range("A27:S27").Select ActiveSheet.Paste Кол-во строк я не знаю заранее.Т.е. скопировал диапозон а3:s3 в a27:s27, прибавил 1 к номерам ячеек и пошел дальше пока не дойду до последней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:37 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
GBHЯ понимаю,что это супер наглость,но нельзя написать этот цикл? Вот моё копирование Windows("my.xls").Activate Range("A3:s3").Select Selection.Copy Windows("d.xls").Activate Range("A27:S27").Select ActiveSheet.Paste Кол-во строк я не знаю заранее.Т.е. скопировал диапозон а3:s3 в a27:s27, прибавил 1 к номерам ячеек и пошел дальше пока не дойду до последней. А зачем цикл если можно все сразу??? Или есть какое-то условие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:52 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Попробую объяснить ситуацию. Есть определенная форма в ексель которую надо заполнить.Я сделал выборку из БД,создал файл ексель.Теперь из созданного файла данные надо экпортнуть в шаблон.Эта операция будет производится периодически,а следовательно и мой файл т.е. кол-во строк будет менятся. При экспорте у меня будут определенные условия.Т.е. вот начал я экспорт,исодный файл начинается с диапозона а2:s2, у шаблона начало а22:s22юДелаю экспорт первого диапозона,перехожу на другой (т.е. a3:s3) тут идет проверка нужного мне условия,если оно выполняется,то копирую a3:s3 в a23:s23 ,если нет до делаю определенную операцию. Так вот,у меня получается,что я иду по диапозонам Ai:Si, вот и хочу просто в цикле менять диапозон на один, т.е. к i прибовлять 1 пока не дойду до последней строки с данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 20:06 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 20:15 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Вот что получилось Dim i As Integer Dim n As Range Set n = Columns(3).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Offset(1, 0) For i = 2 To n Step 1 Windows("my.xls").Activate Range("A" & i & ":s" & i).Select Selection.Copy Windows("d.xls").Activate Range("A" & i + 23 & ":S" & i + 23).Select ActiveSheet.Paste Next i Строчка Set n = Columns(3).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Offset(1, 0) Возвращает диапозон,мне же надо номер строки - это первый вопрос. Второй,если узнаю номер строки,т.е. n я могу вот так в цикл это написать For i = 2 To n Step 1 Windows("my.xls").Activate Range("A" & i & ":s" & i).Select Selection.Copy Windows("d.xls").Activate Range("A" & i + 23 & ":S" & i + 23).Select ActiveSheet.Paste n+1 Next i у меня в условие For i = 2 To n Step 1 n увеличится на 1? Спасибо еще раз! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 20:59 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
1) Код: plaintext 1. 2. 2) нет не увеличится Смотри в справке Do While .... Loop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 21:41 |
|
||
|
VBA. Excel. Экспорт данных.
|
|||
|---|---|---|---|
|
#18+
Dim i As Integer For i = 2 To 10 Step 1 If (Range("T" & i) <> Range("T" & i + 1)) Then Windows("my.xls").Activate Range("A" & i & ":s" & i).Select Selection.Copy Windows("d.xls").Activate Range("A" & i + 21 & ":S" & i + 21).Select ActiveSheet.Paste Windows("my.xls").Activate Range("B" & i & ":s" & i).Select Selection.Copy Windows("d.xls").Activate Range("B" & i + 22 & ":S" & i + 22).Select ActiveSheet.Paste Range("A" & i + 22).Value = "Èòîãî" Range("I" & i + 21).Value = "" Range("O" & i + 21).Value = "" Range("P" & i + 21).Value = "" Range("Q" & i + 21).Value = "" Range("R" & i + 21).Value = "" Range("S" & i + 21).Value = "" End If Next i Вот что я намутил,только не могу понять почему цикл не идет? :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 23:40 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34640375&tid=2163705]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 340ms |

| 0 / 0 |
