Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Word VBA

Автор: agro
Дата сообщения: 31.08.2008 22:43
спасибо большое
завтра попробую
Автор: DmitryKz
Дата сообщения: 02.09.2008 15:18
Скажите, как определить физическое, так сказать, расположение объектов Вордовского документа - рисунки, таблицы, примечания, сноски, концевые сноски? Есть коллекции этих объектов и их индексы. Мне нужно в довольно больших по объему документах выцепить эти объекты и создать документ в своем собственном формате средствами Delphi, проиндексировав эти объекты дав им название для быстрого доступа. В VBA новичок.
Автор: mistx
Дата сообщения: 02.09.2008 16:08
Друзья подскажите пожалуйста как решить данную задачу?

Есть таблица в ворде - 8 колонок.

1- 12\07\1999
2- 28\07\1999
3 - 15
4- 16
5- 120000
6 - хххх.хх
7- хххх.хх

нужно чтобы получилось без таблицы в одну строку

с 12.07.1999 по 28.07.1999 - 120000 Х 16% Х 15 дн Х хххх.хх

КАк реализовать?

Заранее благодарю
Автор: baston
Дата сообщения: 06.09.2008 09:21

Цитата:
Как сделать кнопку/хоткей вставки форматированного текста, чтобы после вставки автоматом применилось форматирование места, куда произведена вставка?

Для этого необязательно использовать макрос и назначать ему кнопку. Защитите стили документа и тогда любой вставленный текст будет иметь то форматирование, какое имеет текст, куда вставляется ваш текст.
Автор: baston
Дата сообщения: 06.09.2008 19:25
mistx

Цитата:
Друзья подскажите пожалуйста как решить данную задачу? Есть таблица в ворде - 8 колонок.

Вот самому подсказали (таблица удаляется):

Код: Sub colToLine()
Dim oTable As Table
Dim oRow As Range
Dim oRange As Range
Dim i As Long
Dim sStr As String
Dim cText As Variant

Set oTable = ActiveDocument.Tables(1)
Set oRange = Selection.Range

oRange.EndOf wdStory, wdMove
oRange.Collapse wdCollapseEnd
oRange.Select

For i = 1 To oTable.Rows.Count
Set oRow = oTable.Rows(i).Range
cText = Split(oRow, Chr(13), -1)
sStr = "с " & cText(0) & _
" по " & cText(1) & _
" - " & cText(4) & _
" x " & cText(3) & _
"% x " & cText(2) & _
" дн x " & cText(5) & vbCr
sStr = Replace(sStr, Chr(92), ".")
oRange.InsertAfter sStr
Next i

oTable.Delete

End Sub
Автор: baston
Дата сообщения: 07.09.2008 14:09
shamman

Цитата:
А может ли кто-нить просветить по такому вопросу: как "склеить" несколько таблиц в одну? Количество и ширина столбцов в таблицах одинаковая; таблицы идут подряд, между собой разделены пустой строкой.

Вот подходящий макрос (автор не я, а Helmut Weber):

Код: Sub delParSignBetweenTables()
'удаление знаков абзаца между таблицами с одинаковой структурой
'но если в документе после таблиц есть текст, а после этого текста
'идет другая таблица, то текст над этой таблицей будет удален
Dim oTbl1 As Table
Dim oTbl2 As Table
Dim rtmp As Range
Dim i As Long
Set rtmp = Selection.Range
With ActiveDocument
i = .Tables.Count
While i > 1
Set oTbl2 = .Tables(.Tables.Count)
Set oTbl1 = .Tables(.Tables.Count - 1)
rtmp.Start = oTbl1.Range.End
rtmp.End = oTbl2.Range.Start
rtmp.Delete
i = .Tables.Count
Wend
End With
End Sub
Автор: mistx
Дата сообщения: 07.09.2008 18:45
baston
спасибо огромное
Автор: vovk_qq
Дата сообщения: 08.09.2008 16:22
Здравствуйте не могли бы помочь..
проблемма в следующем нужно чтоб при отправке на печать документа файл сохранялся в другой папке

Это в ThisDocument


Код: Dim X As New EventClassModule

Private Sub Document_New()
Set X.App = Word.Application
End Sub

Private Sub Document_Open()
Set X.App = Word.Application
End Sub
Автор: Ilov_Alex
Дата сообщения: 19.09.2008 05:01
Подскажите как перескочить сразу к последней строке в документе? А то цикличиские переходы по одной строчке туда-сюда весьма трудоёмки для объёмного списка.
Автор: dneprcomp
Дата сообщения: 19.09.2008 05:35
Ilov_Alex
попробуй
Selection.EndKey Unit:=wdStory
Selection.HomeKey Unit:=wdStory
Selection.MoveDown Unit:=wdScreen, Count:=2
Selection.MoveUp Unit:=wdScreen, Count:=2
Автор: Ilov_Alex
Дата сообщения: 21.09.2008 12:55
dneprcomp, спасибо, но немного не то .

Selection.EndOf Unit:=wdStory, Extend:=wdMove переход в конец текста.
Selection.StartOf Unit:=wdStory, Extend:=wdMove переход в начало текста.
Автор: dneprcomp
Дата сообщения: 21.09.2008 20:20
Ilov_Alex

Цитата:
Подскажите как перескочить сразу к последней строке в документе?

Чем переход в конец текста отличается от запрошеногo?
Автор: pharmakis
Дата сообщения: 22.09.2008 15:24
Доброго времени суток)
Господа, не подскажете одну вещь?
Задача: найти в тексте ВСЕ слова "В А Р И А Н Т" и расставить до и после этого слова знаки "$".

'выделение текста "В А Р И А Н Т", копирование его в Textbox1, расстановка спецзнаков
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Text = "В а р и а н т"
Selection.Find.Replacement.Text = ""
Selection.Find.Forward = True
Selection.Find.Wrap = wdFindContinue
Selection.Find.Format = False
Selection.Find.MatchCase = False
Selection.Find.MatchWholeWord = False
Selection.Find.MatchWildcards = False
Selection.Find.MatchSoundsLike = False
Selection.Find.MatchAllWordForms = False
Selection.Find.Execute
'CopyTekst = Selection
Selection.Sentences.Last.InsertAfter vbCrLf & "$"
Selection.Sentences.First.InsertBefore "$" & vbCrLf

Проблема в том что не получается это зациклить так, чтобы он ставил знаки после каждого слова "В А Р И А Н Т" а не после первого найденного много-много знаков....
Автор: dneprcomp
Дата сообщения: 22.09.2008 20:33
pharmakis
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "В а р и а н т"
.Replacement.Text = "$В а р и а н т$"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Автор: pharmakis
Дата сообщения: 23.09.2008 07:28
2dneprcomp :
Спасибо большое, так работает
Только вот эта штука
Selection.Sentences.Last.InsertAfter vbCrLf & "$"
Selection.Sentences.First.InsertBefore "$" & vbCrLf
в том виде в котором надо в .Replacement.Text никак не помещается, фокус то весь в том чтобы $ проставить до строки со словом вариант и после это строки (потом хочу как-то закладки добавить на эти самые $, и между закладками текст копировать.... каг-то таг, в VBA я мало что понимаю, потому ничего более простого не придумала)
Автор: dneprcomp
Дата сообщения: 23.09.2008 09:08
pharmakis
.Replacement.Text = "$" & vbCrLf & "В а р и а н т" & vbCrLf & "$"
Автор: pharmakis
Дата сообщения: 23.09.2008 09:27

Цитата:
.Replacement.Text = "$" & vbCrLf & "В а р и а н т" & vbCrLf & "$"

пробовала.. получается:
$

Вариант
$
№1

а хотелось бы:
$

Вариант №1
$

Да и к тому же очень хочется потом в цикле закладки делать, и там та же фигня с циклом, делает только одну закладку....((

Добавлено:
Ссылку нашла по VBA (в т.ч . и в Word,Excel) правда для Office 97. Может кому поможет..

http://ftf.grsu.by/UchProc/konspekt/VBA

Добавлено:
оо... и еще вопрос возник а можно копировать текст от знака $ до знака $ в другой документ не используя закладки??
Автор: dneprcomp
Дата сообщения: 23.09.2008 20:04
pharmakis

Цитата:
Задача: найти в тексте ВСЕ слова "В А Р И А Н Т" и расставить до и после этого слова знаки "$".


Цитата:
а хотелось бы:
$

Вариант №1
$


Код: Sub q()

Dim X As Integer

For X = 1 To 17
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Вариант №" & CStr(X)
.Replacement.Text = "$" & vbCrLf & .Text & vbCrLf & "$"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next X

End Sub
Автор: q1wed
Дата сообщения: 24.09.2008 05:59
Задача: есть список. Необходимо его перемешать, то есть выполнить random.
В списке есть пункты с подпунктами (a, b, c,) они естественно при перестановке не должны "оторваться" от своего родного пункта.

Этот список - это список с вопросами, к нему прилагается еще один файл - с ответами, если возможно еще как то синхронно перемешать ответы и вопросы, что бы к примеру вопросу № 5 правильный ответ тоже был под номером 5, - вообще чудно будет!
Автор: pharmakis
Дата сообщения: 24.09.2008 07:33
2dneprcomp

пасиба, щас попробуем))
ненене) задачи не меняютсо, она у мну одна... просто расстановка $ там есть одна из основных частей..
насчет черезмерно сложно: исчо рас, я действительно очень мало знаю VBA, а к сожалению реализовать надо на нем. Потому таг "из-за печки" и получается...

Добавлено:
О! решила проблему с циклической расстановкой закладок! две проблемы из трех решены))
Еще раз спасибо большое dneprcomp, до меня бы просто таг не дошло)))
Автор: pharmakis
Дата сообщения: 26.09.2008 08:06
Решила называется:-D

Все бы хорошо, только закладки он расставляет на одном месте. то есть все на первом найденом слове "$"...
А очень хочется чтобы на каждом долларе - по закладке(



Selection.HomeKey Unit:=wdStory
For i = 1 To 20
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "$"
.Replacement.Text = "$"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Bookmarks.Add "zakladka" & CStr(i)
Selection.Bookmarks(i).Range.Text = "Закладка" & CStr(i)
Selection.Find.Execute Replace:=wdReplaceAll
Next i
Автор: Knigaz
Дата сообщения: 27.09.2008 18:07
Подскажите, как программно определить, поместится ли текущий документ при печати на печатный лист (по правой границе)? Чтобы выяснить, нужно ли менять ориентацию страницы на альбомную или там уменьшать шрифт...
Автор: baston
Дата сообщения: 28.09.2008 16:38
Ilov_Alex

Цитата:
dneprcomp, спасибо, но немного не то .
Selection.EndOf Unit:=wdStory, Extend:=wdMove переход в конец текста.
Selection.StartOf Unit:=wdStory, Extend:=wdMove переход в начало текста.


Может быть вы хотите перейти к последней строке на текущей странице? ТОгда вот попробуйте рабочий код (не мой, помогли):

Код: Sub chPer()
Dim oPage As Range
Set oPage = ActiveDocument.Bookmarks("\page").Range
oPage.Select
With Selection
.EndKey
.HomeKey
End With
End Sub
Автор: NastyaS1
Дата сообщения: 30.09.2008 22:58
ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Написать макрос, для Microsoft Word упорядочивающий и нумерующий абзацы в текущей главе:
1)    по умолчанию без упорядочивания
2)    с выбором типа нумерации и способа упорядочивания и размещения абзацев на странице

Макрос 2) должен выполняться только в области его действия, в случае запуска макроса вне области действия должно выдаваться сообщение об ошибке.
Макрос должен размещаться в шаблоне пользователя или документе и не копироваться в Normal.dotю Макрос не должен препятствовать выполнению стандартных макросов. Дополнительные условия работы макроса должны быть описаны в комментариях.
Автор: DmitryKz
Дата сообщения: 01.10.2008 10:01
Ребята, подскажите, пожалуйтса: если в режиме Структуры нажать на крестик заголовка одного уровня, то выделятся все последующие подуровни. Но в макросе это все отображается лишь как, например:

Код: ActiveWindow.ActivePane.View.Type = wdOutlineView
Selection.Copy 'здесь я просто копирую выделение в буфер
Автор: DachnikGarik
Дата сообщения: 01.10.2008 10:30
Господа, подскажите пожайлуста! Я в VBA только начинаю разбираться. Надо осуществить следующее. Из ячеек в EXcell (ну уж эксель в скрытом режиме я запущу) вытащить значения и вставить в WORD, причем в определенные места. Думаю осуществить такое через коды полей. С полями работал кто-нибудь? Подскажите как из другого документа ну или из буфера обмена на худой конец вставить текст в заранее заготовленное поле. Значений много, каждое поле будет иметь уникальный идентификатор.
Автор: baston
Дата сообщения: 03.10.2008 11:58
NastyaS1

Цитата:
упорядочивающий и нумерующий абзацы в текущей главе

Что это за глава такая? У Word нет такого объекта. Есть разделы, есть параграфы, слова. У вас эта глава как отдельный раздел идет?

Цитата:
1) по умолчанию без упорядочивания

не ясно, что же тогда в этом случае должен делать макрос...
Автор: KEY
Дата сообщения: 04.10.2008 22:24
DachnikGarik
В вашем случае самый простой(и красивый) способ - слияние!

Автор: mrdime
Дата сообщения: 07.10.2008 19:29
Господа,
Стоит такая задача. Есть около 200 файлов Word c адресами фирм (1файл - 1 адрес). Есть листы формата А4 с наклейками. Надо организовать печать адресов на наклейках. Планирую слить все в один файл Ворд, экспортировать в Excel т.е. сделать в нем своеобразную базу данных и из нее печатать наклейки в Ворде. Естественно руками это делать накладно. Пишу небольшую прогу. Возникает вопрос: как экспортировать из Ворда данные в Excel? Использую MS Office 2007. Кто сталкивался с подобной задачей, буду благодарен за советы.
Добавлено
Уже со всем разобрался сам.
Автор: VBAkraft
Дата сообщения: 08.10.2008 07:43
У меня вопрос, касающийся элементов ActiveX.
Как к созданной полосе прокрутки "подцепить" значение ячейки в Экселе? (в экселе это проще простого - нужно это сделать из другого приложения). Как, например, в VBA прописать, чтобы двигая бегунок в вордовском документе вверх-вниз, менялось значение ячейки в экселевском документе?

Страницы: 1234567891011121314151617181920212223242526

Предыдущая тема: Кластеризация изображений


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.