powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Excel. Экспорт данных.
25 сообщений из 29, страница 1 из 2
VBA. Excel. Экспорт данных.
    #34639594
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Возникла необходимость произвести экспорт данных из одного файла excel в другой.С VBA знаком поскольку постольку,т.е. чайник.
Как,например,ячейку А1 из файла my.xls экспортировать (т.е. скопировать) в А1 файла d.xls.

Заранее спасибо.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34639932
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искать пробовал??
http://www.sql.ru/forum/actualthread.aspx?tid=447131
Не подойдет????

С уважением, Николай.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34640375
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GBHВозникла необходимость произвести экспорт данных из одного файла excel в другой.С VBA знаком поскольку постольку,т.е. чайник.
Как,например,ячейку А1 из файла my.xls экспортировать (т.е. скопировать) в А1 файла d.xls.

Заранее спасибо.

Для этого VBA не нужен
Файл d.xls - Ячейка A1
='[my.xls]myList'!$A$1
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34640882
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Спасибо за ответы.
gjghjc
Искать пробывал,но даже не знаю как вопрос сформулировать :-(
Это я видел.Дело в том,опять же повторюсь,c VBA тяжело,а до субботы надо это сделать.
Поэтому попросил,чтобы показали легкий пример,как копировать хотябы одну ячейку.А дальше,если возн7икнут вопросы,то опять сюда :-)

Deggasad
Я просто хочу сделать форму с кнопочкой и чтобы при нажатии данной кнопочки производился экспорт.Причем изначально кол-во строк исходного документа не известно,хочу задать цикл и чтобы в этом цикле менялись номера ячеек.


Так что если всё таки кто-то для начала покажет как экспортнуть хотя бы одну ячейку буду очень признателен.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641039
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) А вторая книга открыта или закрыта???
2) Часто выручает ЗАПИСЬ МАКРОСА. делаешь что нужно ручками, при этом записываешь, потом смотришь и кумекаешь что к чему, справку читаешь и книжки + инет.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641055
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Deggasad
Запись макроса не вариант.Т.к. кол-во строк в таблице откуда делается експорт не известен,а также не известно по каким строчкам надо делать подитог.Вот я и хочу загнать експорт в цикл,до конца файла
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641137
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда
алгоритм типа такого...
Открой обе книги, а этот код помести в личную книгу макросов

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Макрос1()
Workbooks("my").Activate
Worksheets("Лист1").Select
Selection.Cells( 1 ,  1 ).Copy

Workbooks("d").Activate
Worksheets("Лист").Cells( 1 ,  1 ).Select
ActiveSheet.Paste
End Sub

Cells (строка, столбец)
Думаю как организовать цикл поймешь сам

Это для начала.... потом можно будет немного усложнить и сделать код поэффективней...

Код: plaintext
1.
2.
3.
4.
 Range("A1:D1").Select
    Selection.Copy
    Windows("Книга3").Activate
    Range("A1").Select
    ActiveSheet.Paste
А это код сформированый при помощи записи макроса.
Попробуй и его

Теперь что касается цикла "до конца файла"... Перебирать 65535 строк и 255 столбцов и искать в них значения не совсем логично.
Посмотри в хелпе по VBA как работает UsedRange.
Вобщем дерзай!
С уважением, Николай.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641328
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например копировать значения диапазона.

Код: plaintext
1.
Workbooks("d").Worksheets("Лист1").Range("A1:B"&n).value = _
  Workbooks("my").Worksheets("Лист1").Range("A1:B"&n).Value,

Код: plaintext
1.
2.
где n - номер последней строки, можно найти, так
n = Workbooks("d").Worksheets("Лист1").cells. _
  Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row

Обе книги должны быть открыты
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641334
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка была в определении последней строки

Код: plaintext
1.
2.
3.
4.
5.
6.
Workbooks("d").Worksheets("Лист1").Range("A1:B"&n).value = _
  Workbooks("my").Worksheets("Лист1").Range("A1:B"&n).Value,


где n - номер последней строки, можно найти, так
n = Workbooks("my").Worksheets("Лист1").cells. _
  Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641497
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если в диапазоне будут пустые строки?
И чего то у меня ругается на код по определению последней строки

а вот так
Код: plaintext
1.
 ActiveSheet.UsedRange.Select
n = Selection.Rows.Count
работает

С уважением, Николай.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641559
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjcА если в диапазоне будут пустые строки?
И чего то у меня ругается на код по определению последней строки

а вот так
Код: plaintext
1.
 ActiveSheet.UsedRange.Select
n = Selection.Rows.Count
работает

С уважением, Николай.

Я бы всё-таки советовал так, возможно это предрассудок...

Код: plaintext
n = ActiveSheet.cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641690
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n = ActiveSheet.cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
О! заработало! И пустые строки этому коду побоку и по скорости супротив моего быстрее :)
(2Deggasad спасибо. Добавлю в свою копилочку :) )

С уважением, Николай.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641831
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjcn = ActiveSheet.cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
О! заработало! И пустые строки этому коду побоку и по скорости супротив моего быстрее :)
(2Deggasad спасибо. Добавлю в свою копилочку :) )

С уважением, Николай.

Тем более можно можно искать в любом указанном диапазоне, либо в определённом столбце, строке. Можно сразу ячейку назначать, а не число например
Код: plaintext
1.
2.
3.
4.
5.
' Последняя ячейка в 3-м столбце
Dim icel as Range
Set icel = Columns( 3 ).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows)
' или следующая после последней
Dim icel as Range
Set icel = Columns( 3 ).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).offset( 1 , 0 )
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34641855
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добил... :)
Контрольный топик.. в голову. :)
Извините за офтопик.
С уважением, Николай.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34642310
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Ой!Как много всего!
Огромное всем спасибо!
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34644934
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Вот что у меня получилось для копирования одного диапозона ячеек из одного файла в другой.

Windows("my.xls").Activate
Range("A3:s3").Select
Selection.Copy

Windows("d.xls").Activate
Range("A27:S27").Select
ActiveSheet.Paste

Честно говоря думал,что просто сделаю цикл,который будет менять значения диапозонов,т.е. поставлю Ai:Si, и буду менять значение i.Только что-то,видимо,не то я дуиал.:-(
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34644951
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Range("Ai:Si")
а
Код: plaintext
Range("A" & i & ":S" & i)
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34644958
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Спасибо большое!

Но я же тоже писал,что дуб дубом в vba :-)
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34644973
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
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 к номерам ячеек и пошел дальше пока не дойду до последней.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34645001
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 к номерам ячеек и пошел дальше пока не дойду до последней.

А зачем цикл если можно все сразу??? Или есть какое-то условие?
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34645027
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Попробую объяснить ситуацию.
Есть определенная форма в ексель которую надо заполнить.Я сделал выборку из БД,создал файл ексель.Теперь из созданного файла данные надо экпортнуть в шаблон.Эта операция будет производится периодически,а следовательно и мой файл т.е. кол-во строк будет менятся.
При экспорте у меня будут определенные условия.Т.е. вот начал я экспорт,исодный файл начинается с диапозона а2:s2, у шаблона начало а22:s22юДелаю экспорт первого диапозона,перехожу на другой (т.е. a3:s3) тут идет проверка нужного мне условия,если оно выполняется,то копирую a3:s3 в a23:s23 ,если нет до делаю определенную операцию.
Так вот,у меня получается,что я иду по диапозонам Ai:Si, вот и хочу просто в цикле менять диапозон на один, т.е. к i прибовлять 1 пока не дойду до последней строки с данными.
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34645043
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
'n - номер последней строки, можно найти, так
n = Workbooks("my.xls").Worksheets("Лист1").cells. _
  Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row

'Цикл для i начиная с 3 заканчивая номером последней строки с шагом один (шаг - Step можно явно не указывать - по умолчанию и так 1)
For i =  3  To n Step  1 
 'тут твои действия
Next i
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34645091
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
Вот что получилось

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?

Спасибо еще раз!
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34645138
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
Код: plaintext
1.
2.
Dim i As Long
Dim n As Long
Set n = Columns( 3 ).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Offset( 1 ,  0 ).Row

2) нет не увеличится

Смотри в справке
Do While
....
Loop
...
Рейтинг: 0 / 0
VBA. Excel. Экспорт данных.
    #34645222
GBH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GBH
Гость
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

Вот что я намутил,только не могу понять почему цикл не идет? :-(
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Excel. Экспорт данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]