из Ворд в Ексель

Программирование на Visual Basic for Applications
abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

из Ворд в Ексель

Сообщение abracadabra » 20.01.2005 (Чт) 18:07

Уважаемые Вба-знатоки,
Задача такая: В Вордовском документе есть данные в несколько строк -
от 3 до 10. Нужно скопировать их и поместить на лист в Ексель по порядку в разные ячейки. Скопировать нужно одноразово. А не по одной строчке. Помогите это сделать, буду очень признателен

Tatyanka
Немного Иная
Немного Иная
Аватара пользователя
 
Сообщения: 876
Зарегистрирован: 02.12.2004 (Чт) 13:55
Откуда: Киев

Сообщение Tatyanka » 20.01.2005 (Чт) 20:18

Простейший вариант:
в Ворде
Sub ...
Selection.HomeKey Unit:=wdStory
Selection.EndKey Unit:=wdStory, Extend:=wdExtend
Selection.Copy
Shell "C:\Microsoft Office\Office11\Excel.exe"
End Sub

А вот с Экселем сложнее. Если есть возможность запихнуть Workbook_Open, то просто
ActiveSheet.Paste

Попробуй.
Это на случай, если в вордовском документе нет ничего, кроме нужных строк.
Мы - Иные. Мы служим разным силам. Но в сумраке нет разницы между отсутствием тьмы и отсутствием света. Наша борьба способна уничтожить мир. Мы заключаем Великий Договор о перемирии...

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 21.01.2005 (Пт) 12:24

немножко не то. Ворд я написал для примера, а вообще мне нужно в одной программе перебрать данные - за 3 или больше дат и вставить в ексель. в ворд вставляется нормально, а в ексель всатвляется только одно значение.
Вот код
Sub TypeLaborwert(Laborwert As Laborwert)
With Application.Selection
.TypeText (Laborwert.Datum)
.TypeText (Chr(9) + Laborwert.Param + Chr(9))
If Laborwert.Wert <> undefLong Then
.TypeText (Format(Laborwert.Messwert) + " " + Laborwert.Einheit)
End If
.TypeText (Chr(9))
If Laborwert.Minwert <> undefLong Then
.TypeText (Format(Laborwert.Minwert) + " " + Laborwert.Einheit)
End If
.TypeText (Chr(9))
If Laborwert.Maxwert <> undefLong Then
.TypeText (Format(Laborwert.Maxwert) + " " + Laborwert.Einheit)
End If
.TypeText (Chr(9))
.TypeText (Laborwert.Gw)
.TypeParagraph
End With
End Sub

Здесь вставляются все данные, которые есть

А вот екселевский вариант - только одно:

Sub TypeLaborwert(Laborwert As Laborwert)

Worksheets(1).Range("E9").Value = Laborwert.Datum
Worksheets(1).Range("F9").Value = Laborwert.Param
If Laborwert.Wert <> undefLong Then
Worksheets(1).Range("G9").Value = (Format(Laborwert.Messwert) + " " + Laborwert.Einheit)
End If

If Laborwert.Minwert <> undefLong Then
Worksheets(1).Range("H9").Value = (Format(Laborwert.Minwert) + " " + Laborwert.Einheit)
End If

If Laborwert.Maxwert <> undefLong Then
Worksheets(1).Range("I9").Value = (Format(Laborwert.Maxwert) + " " + Laborwert.Einheit)
End If

Worksheets(1).Range("J9").Value = (Laborwert.Gw)


End Sub

И не знаю чё делать

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 31.01.2005 (Пн) 18:38

abracadabra писал(а):Laborwert As Laborwert

Что за зверь такой???
Дай полный код(Телепат в отпуске, а я только на машинке вышивать умею :D )

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 31.01.2005 (Пн) 19:00

Я говорил, говорю, и буду говорить о средствах записи макросов!!!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 31.01.2005 (Пн) 19:14

Ramzes писал(а):Я говорил, говорю, и буду говорить о средствах записи макросов!!!


Большая часть вопросов снимается после правильного использования рекодера.

Одно НО! Надо уметь им пользоватся и понимать полученный код :D

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 01.02.2005 (Вт) 12:51

2 Igor_123
Laborwert As Laborwert это не самое важное. Это тип данных из другой большой программы. Суть не в том. Производится импорт данных из одной программы в ексель. Суть в том, что в ворд выполняется импорт всех данных, а в ексель - токо один (по заданным координатам ячеек). И я не знаю шо нужно написать в ексель шоб импортировать все данные. Вордовский код я привёл. И екселевский тоже.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 12:56

Igor_123 писал(а):
Ramzes писал(а):Я говорил, говорю, и буду говорить о средствах записи макросов!!!


Большая часть вопросов снимается после правильного использования рекодера.

Одно НО! Надо уметь им пользоватся и понимать полученный код :D

А вот для этого "НО" и создали хорошие дядки этот форум :wink:

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 15:07

abracadabra писал(а):а в ексель - токо один (по заданным координатам ячеек). И я не знаю шо нужно написать в ексель шоб импортировать все данные. Вордовский код я привёл. И екселевский тоже.


Судя по коду, в зависимости от значений, должны заполнится ячейки:
E9, F9, G9, H9, I9, J9

и СКОЛЬКО-БЫ НЕ ВЫЗЫВАТЬ будут перезаписыватся только эти ячейки

Поэтому я не понял в чем тебя не устраивает работа программы? :?:

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 15:25

2 abracadabra я бы давно подъехал к уважаемому Ramzes
с парой бутылок пива и порешал все проблемы :P :wink:

Ramzes с тебя пиво за клиента :wink:

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 15:35

Пиво так пиво, а передавать как ???

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 15:47

abracadabra писал(а):немножко не то. Ворд я написал для примера, а вообще мне нужно в одной программе перебрать данные - за 3 или больше дат и вставить в ексель. в ворд вставляется нормально, а в ексель всатвляется только одно значение.
Вот код
Sub TypeLaborwert(Laborwert As Laborwert)
With Application.Selection
.TypeText (Laborwert.Datum)
.TypeText (Chr(9) + Laborwert.Param + Chr(9))
If Laborwert.Wert <> undefLong Then
.TypeText (Format(Laborwert.Messwert) + " " + Laborwert.Einheit)
End If
.TypeText (Chr(9))
If Laborwert.Minwert <> undefLong Then
.TypeText (Format(Laborwert.Minwert) + " " + Laborwert.Einheit)
End If
.TypeText (Chr(9))
If Laborwert.Maxwert <> undefLong Then
.TypeText (Format(Laborwert.Maxwert) + " " + Laborwert.Einheit)
End If
.TypeText (Chr(9))
.TypeText (Laborwert.Gw)
.TypeParagraph
End With
End Sub

Здесь вставляются все данные, которые есть

А вот екселевский вариант - только одно:

Sub TypeLaborwert(Laborwert As Laborwert)

Worksheets(1).Range("E9").Value = Laborwert.Datum
Worksheets(1).Range("F9").Value = Laborwert.Param
If Laborwert.Wert <> undefLong Then
Worksheets(1).Range("G9").Value = (Format(Laborwert.Messwert) + " " + Laborwert.Einheit)
End If

If Laborwert.Minwert <> undefLong Then
Worksheets(1).Range("H9").Value = (Format(Laborwert.Minwert) + " " + Laborwert.Einheit)
End If

If Laborwert.Maxwert <> undefLong Then
Worksheets(1).Range("I9").Value = (Format(Laborwert.Maxwert) + " " + Laborwert.Einheit)
End If

Worksheets(1).Range("J9").Value = (Laborwert.Gw)


End Sub

И не знаю чё делать


Скинь документ из которого данніе должни копироваться в лист и лист скинь и я тебе стряпаю прогу, бедшь доволен, а так как ты со Львова, еще и пиво по возможности поставишь

а то я маленько не понял что именно требуеться :oops:

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 01.02.2005 (Вт) 16:07

2 igor_123
В том то и дело, что записываются только определённые ячейки, а мне надо, шоб остальные под ними тоже каким-то образом заполнялись. Как в ворде, в ворде все подряд данные выводятся - один под одним.
2 Ramzes. Это не лист с данными, а данные из одной большой программы, из её базы данных. Нуно просто перебрать все даннst в программе, что я и делаю, но потом одним махом их вставить в ексель. А у меня вставляется только одно - последнее значение. В определённые ячейки. А в ворде всё нармально.
А насчёт пива - это запросто.
Крокодил, крокодю и буду крокодить!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 16:12

Написал лс для абракадабры :D

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 16:23

2 Ramzes пересечёмся в августе-сентябре на ЮБК вместе и попьём

2 abracadabra правильно в ворде ты дописываеш строки
.TypeParagraph - вставляеш новый абзац(строку)

а в екселе задано жестко в 9-ю строку писать
замени на
Код: Выделить всё

'Worksheets(1).Range("E9").Value вместо "E9"
Worksheets(1).Range(Cells(RowPos, 5),Cells(RowPos, 5)).Value
'Где 5 номер столбца
...
RowPos = RowPos + 1


RowPos объяви на уровне модуля и инициализируй
RowPos = 9 перед первым вызовом TypeLaborwert

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 17:17

Что такое ЮБК

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 17:26

Южный
Берег
Крыма

:D

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 17:37

С чего ты взял что я там буду :?:

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 17:46

Там постараюсь быть я.
А ты, тоже отдыхаешь, поэтому я сделал предположение, что возможно бываешь и на юбк. :D

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 17:55

Может и буду, а может и нет, а пива вместе попить можно не только на ЮБК :wink:

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 18:00

Согласен!
Будеш в наших краях заходи! :D
Прежде чем ехать напиши вышлю адрес!

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 01.02.2005 (Вт) 18:03

2 igor_123
Спасибо. Но у меня шото ничё не получилось.
А как оно в коде:
Типа того?
Sub TypeLaborwert(Laborwert As Laborwert)
Worksheets(1).Range(Cells(RowPos, 5), Cells(RowPos, 5)).Value = Laborwert.Datum
Worksheets(1).Range(Cells(RowPos, 5), Cells(RowPos, 5)).Value = Laborwert.Param
If Laborwert.Wert <> undefLong Then
Worksheets(1).Range(Cells(RowPos, 5), Cells(RowPos, 5)).Value = (Format(Laborwert.Messwert) + " " + Laborwert.Einheit)
End If

If Laborwert.Minwert <> undefLong Then
Worksheets(1).Range(Cells(RowPos, 5), Cells(RowPos, 5)).Value = (Format(Laborwert.Minwert) + " " + Laborwert.Einheit)
End If

If Laborwert.Maxwert <> undefLong Then
Worksheets(1).Range(Cells(RowPos, 5), Cells(RowPos, 5)).Value = (Format(Laborwert.Maxwert) + " " + Laborwert.Einheit)
End If

Worksheets(1).Range(Cells(RowPos, 5), Cells(RowPos, 5)).Value = (Laborwert.Gw)


End Sub

И перед вызовом я поставил ровпоз=9 и вабще ничё не вставило

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 18:17

Столбец Е это 5, F - 6 и т.д.
а перед End Sub вставить
RowPos = RowPos + 1

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 01.02.2005 (Вт) 18:24

2 igor_123
Ты гений. Палучилось. С меня пиво...
Спасибо!
Крокодил, крокодю и буду крокодить!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 18:29

Ramzes'у поставишь!
А то я у него зароботок отбил :oops:

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 18:30

Пиво все таки тебе, я так и немогу понять что надобыло сделать :oops: :cry:

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 01.02.2005 (Вт) 18:32

НЕ ну рамзесу по-любому!
И ты во львов заежжай
Крокодил, крокодю и буду крокодить!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 18:36

abracadabra писал(а):НЕ ну рамзесу по-любому!
И ты во львов заежжай


куда ?

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 01.02.2005 (Вт) 18:39

это я имел в виду igorя_123 из Днепропетровска, а ты вроде и так во Львове.
Крокодил, крокодю и буду крокодить!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 01.02.2005 (Вт) 18:51

2 abracadabra был когда-то( в ~1987 г ), красивый город!

2 Ramzes вывод в ворд похож на вывод в файл, дописываешь новые данные в конец, а бейсик сам следит за указателем куда писать.
В екселе нужно самому устанавливать куда писать.
У abracadabra не было перехода по строкам и все писалось в одне и те же ячейки


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList