Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2014, 23:24   #1
oleg2201
 
Регистрация: 29.09.2014
Сообщений: 7
Вопрос Многократное копирование и вставка значений из таблицы Ворд в формулу в Ворде при помощи макроса

Здравствуйте, помогите пожалуйста дилетанту.
alexOK2201@yandex.ru
В документе Ворд присутствует обычная неименованная таблица (диапазону не присвоено имя) размером 2 ячейки на 2 ячейки.
Содержимое таблицы визуально:
a 2
b 3
Под таблицей находится ряд простых и примитивных формул вида:
a+b= + =
a-b= - =
a^2+b^2= ^2+ ^2=

Моя задача сводится к тому, чтобы поочередно скопировать и вставить значение "переменных" "a" и "b" из таблицы ворд (a=2 b=3 как вы поняли) в вышеуказанные формулы при помощи макроса ворд:
Чтобы документ принял вид (должна остаться таблица и должны быть "переписаны" значения переменных
a 2
b 3
a+b=2+3
a-b=2-3
a^2+b^2=2^2+3^2
Цель: не "научить" ворд вычислять математические выражения, а понять смысл кода макроса и применить его к главам дипломной работы, в которой очень много формул "перебивать" в ручную которые бы не хотелось при условии, что данные в таблице часто меняются и из-за этого часто приходится корректировать текст в пояснительной записке (то есть копировать и вставлять из таблицы значения в формулы по листам 30-40 текста)
За помощь заранее благодарен
Пробная запись макроса без отладки выдает кучу ошибок
oleg2201 вне форума Ответить с цитированием
Старый 29.09.2014, 23:40   #2
oleg2201
 
Регистрация: 29.09.2014
Сообщений: 7
По умолчанию дополнение

Насколько я понимаю при копировании данных таблицы в соответствующие поля формул ворда, представленных в профессиональном, а не линейном виде из-за разного типа данных (таблица - текст) происходит несуразица

Исходный вид документа
a 2
b 3

a+b=2 +3 =
a-b= 2- 3=
a^2+b^2=2^2+3^2= при замене значений в таблице и при запуске записанного макроса преобразуется в нечто корявое несоответствующее моим ожиданиям
a 7
b 15

a
a+b=72 +3 =
a
a-b= 27- 3=
a
a^2+b^2=72^2+3^2=
oleg2201 вне форума Ответить с цитированием
Старый 30.09.2014, 00:02   #3
oleg2201
 
Регистрация: 29.09.2014
Сообщений: 7
Вопрос дополнение код макроса ворд

Чтобы понять в чем ошибка выкладываю текст макроса. Так как я не специалист в области программирования на VBA, попрошу вас по возможности добавить комментарии напротив строк макроса с пояснениями, что осуществляется на том или ином этапелибо если нет свободного времени решать чужие проблемы, указать мне ссылку на сайт, где я смогу почерпнуть для себя полезную информацию по программированию и написанию макросов в ворд

Заранее очень признателен
Код макроса
Sub
'
'
Selection.MoveUp Unit:=wdLine, Count:=5 (перемещение по тексту курсором вверх)
Selection.MoveLeft Unit:=wdCharacter, Count:=1(перемещение по тексту курсором влево)
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend (перемещение по тексту курсором вправо)
Selection.Copy (выделение значения переменной а, копирование в буфер обмена)
Selection.MoveDown Unit:=wdLine, Count:=2 (перемещение по тексту курсором вниз)
Selection.MoveRight Unit:=wdCharacter, Count:=6 (перемещение по тексту курсором вправо)
Selection.PasteAndFormat (wdPasteDefault) (выделение и вставка значения переменной а)
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=3
Selection.PasteAndFormat (wdPasteDefault)
Selection.MoveUp Unit:=wdLine, Count:=5
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Copy
Selection.MoveDown Unit:=wdLine, Count:=2
Selection.MoveRight Unit:=wdCharacter, Count:=2
Selection.PasteAndFormat (wdPasteDefault)
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdPasteDefault)
End Sub
oleg2201 вне форума Ответить с цитированием
Старый 30.09.2014, 00:19   #4
oleg2201
 
Регистрация: 29.09.2014
Сообщений: 7
Вопрос попробовал изменить код макроса

Заменил макрокоманду
Selection.PasteAndFormat (wdPasteDefault)
на Selection.PasteAndFormat (wdFormatPlainText)
позволяющую просто вставить текст с незатронутым форматированием

Источник данных: http://www.pcmag.ru/solutions/detail.php?ID=11060
Автоматизация вставки без форматирования в Word 2003
У меня версия Ворд 2007 года

В итоге изменений не заметил:
a 5
b 8

aa+b=52 +3 =
aa-b= 25- 3=
a^2a+b^2=52^2+3^2=

До этого предыдущими значениями а и б были 2 и 3. Такое ощущение, что эти значения остались в буфере обмена и не были удалены (а как выражаются программисты "были сжаты "в точку")

Вопрос остается открытым, что мне изменить, чтобы код выполнялся правильно?
oleg2201 вне форума Ответить с цитированием
Старый 30.09.2014, 00:34   #5
oleg2201
 
Регистрация: 29.09.2014
Сообщений: 7
Вопрос неудачные пробы

Даже при попытки действовать по алгоритму:
1. Выделить значение переменной а,
2. Скопировать значение переменной а,
3. Переместить курсор в нужную позицию документа на ту часть формулы, где требуется вставить значение переменной а,
4. Выделить прежнее числовое значение переменной а,
5. Удалить прежнее числовое значение переменной а,
6. Вставить действующее значение переменной а из буфера обмена в нужную позицию документа на ту часть формулы, где требуется вставить значение переменной а

аналогичные действия и с копированием, удалением и вставкой значения переменной б
Вопрос открытый, что делать???
oleg2201 вне форума Ответить с цитированием
Старый 30.09.2014, 00:35   #6
oleg2201
 
Регистрация: 29.09.2014
Сообщений: 7
Вопрос Недоработанный код макроса после отладки

Sub Ìàêðîñ1()
'
' Ìàêðîñ1 Ìàêðîñ
'
'
Selection.MoveLeft Unit:=wdCharacter, Count:=47
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Copy
Selection.MoveRight Unit:=wdCharacter, Count:=14
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatPlainText)
Selection.MoveRight Unit:=wdCharacter, Count:=12
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatPlainText)
Selection.MoveRight Unit:=wdCharacter, Count:=19
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatPlainText)
Selection.MoveLeft Unit:=wdCharacter, Count:=44
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Copy
Selection.MoveRight Unit:=wdCharacter, Count:=11
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatPlainText)
Selection.MoveRight Unit:=wdCharacter, Count:=13
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatPlainText)
Selection.MoveRight Unit:=wdCharacter, Count:=22
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatPlainText)

End Sub

Последний раз редактировалось oleg2201; 30.09.2014 в 00:41.
oleg2201 вне форума Ответить с цитированием
Старый 30.09.2014, 01:16   #7
oleg2201
 
Регистрация: 29.09.2014
Сообщений: 7
Вопрос могут ли мне помочь указанные команды ворд при написании макроса?

EditPaste Вставка содержимого буфера обмена в месте расположения курсора
EditPasteAppendTable Вставка содержимого буфера обмена в месте расположения курсора
EditPasteAsHyperlink Вставка содержимого буфера обмена как объекта гиперссылки
EditPasteAsNestedTable Вставка содержимого буфера обмена в месте расположения курсора
EditPasteFromExcel Вставка содержимого буфера обмена в месте расположения курсора
EditPasteOption Вставка содержимого буфера обмена в месте расположения курсора с использованием определенного режима восстановления

И НЕ ПОТОМУ ЛИ У МЕНЯ ТАК МНОГО ОШИБОК, ЧТО Я РАБОТАЮ С РАЗЛИЧНЫМ ТИПОМ ДАННЫХ?
oleg2201 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление дат при помощи макроса alexp21 Microsoft Office Excel 2 26.09.2013 14:56
Копирование таблицы из Ворд в Эксель Ольга060289 Помощь студентам 2 19.10.2012 11:09
Вставка таблицы эксель в ворд n0str0m0 Microsoft Office Word 3 22.05.2012 11:51
Копирование и вставка значений tae1980 Microsoft Office Excel 7 29.05.2009 09:15
Изменить цвет при помощи макроса А. Долматов Microsoft Office Excel 5 26.09.2007 21:02