Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

Открыть новую тему     Написать ответ в эту тему

exMIB



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
 
Обсуждаем вопросы только по Word VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Word, не относящиеся к программированию, задаем в теме Microsoft Word

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Рекомендации:
Если у Вас есть проблема, не решаемая стандартными средствами Word (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Word (на вкладке Разработчик - Запись Макросов). Подробнее здесь. В большинстве случаев получившийся код (Разработчик-Макросы-Макрос-Изменить или Разработчик-Visual Basic) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроенная помощь (F1), естественно.
 
Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылезает ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

 
Рекомендуется к прочтению:
  • Начало работы с VBA в Word 2010
  • Microsoft Visual Basic for Application. Осетрова И.С., Осипов Н. А. Учебное пособие (руководство по программированию на VBA в MS Office)  
  • Введение в VBA для приложений MS OFFICE
  • Word и его объекты. Лекция из курса «Основы офисного программирования и документы Word»
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Справка по VBA
  • Microsoft Word Visual Basic Reference - руководство по VBA (eng.)
  • Справочник по Word VBA
  • Блог Александра Гуревича  - тематический блог: советы по работе с Word и Excel и прочие материалы
  • Форум по VBA, Excel и Word Макросы в Word -тематический форум, готовые решения
  • Список полезной литературы по Word и программированию на VBA
  • Подборка решений на VBA для Word  
     
     
  • Excel VBA все вопросы по Excel VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы/готовые решения:
  • функция возвращает список закладок в документ
     
    Перечень основных ColorIndex'ов из MSDN
     
    - стартовый вопрос топика...

    Смежные темы:
    Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
    Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
    Программы » Word FAQ | Excel FAQ | Access FAQ
    Прикладное программирование » Excel VBA | Access VBA  
    Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
    Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
    Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
    Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007

  • Всего записей: 3300 | Зарегистр. 27-09-2001 | Отправлено: 03:05 01-06-2005 | Исправлено: ALeXkRU, 17:10 03-08-2021
    Ilov_Alex

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp, спасибо, но немного не то .
     
    Selection.EndOf Unit:=wdStory, Extend:=wdMove переход в конец текста.
    Selection.StartOf Unit:=wdStory, Extend:=wdMove переход в начало текста.

    Всего записей: 20 | Зарегистр. 26-06-2008 | Отправлено: 13:55 21-09-2008
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ilov_Alex

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

    Чем переход в конец текста отличается от запрошеногo?

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:20 21-09-2008 | Исправлено: dneprcomp, 21:22 21-09-2008
    pharmakis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток)
    Господа, не подскажете одну вещь?
    Задача: найти в тексте ВСЕ слова "В А Р И А Н Т" и расставить до и после этого слова знаки "$".
     
    'выделение текста "В А Р И А Н Т", копирование его в 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
     
    Проблема в том что не получается это зациклить так, чтобы он ставил знаки после каждого слова "В А Р И А Н Т" а не после первого найденного много-много знаков....

    Всего записей: 8 | Зарегистр. 22-09-2008 | Отправлено: 16:24 22-09-2008
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:33 22-09-2008
    pharmakis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2dneprcomp :
    Спасибо большое, так работает
    Только вот эта штука
    Selection.Sentences.Last.InsertAfter vbCrLf & "$"  
    Selection.Sentences.First.InsertBefore "$" & vbCrLf  
    в том виде в котором надо в .Replacement.Text никак  не помещается, фокус то весь в том чтобы $ проставить до строки со словом вариант и после это строки (потом хочу как-то закладки добавить на эти самые $, и между закладками текст копировать.... каг-то таг, в VBA я мало что понимаю, потому ничего более простого не придумала)

    Всего записей: 8 | Зарегистр. 22-09-2008 | Отправлено: 08:28 23-09-2008
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    pharmakis
    .Replacement.Text = "$" & vbCrLf & "В а р и а н т" & vbCrLf & "$"

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 10:08 23-09-2008 | Исправлено: dneprcomp, 10:14 23-09-2008
    pharmakis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

    пробовала.. получается:
    $
     
    Вариант  
    $
    №1
     
    а хотелось бы:
    $
     
    Вариант №1
    $
     
    Да и к тому же очень хочется потом в цикле закладки делать, и там та же фигня с циклом, делает только одну закладку....((
     
    Добавлено:
    Ссылку нашла по VBA (в т.ч . и в Word,Excel) правда для Office 97. Может кому поможет..
     
    http://ftf.grsu.by/UchProc/konspekt/VBA
     
    Добавлено:
    оо...  и еще вопрос возник а можно копировать текст от знака $ до знака $ в другой документ не используя закладки??  

    Всего записей: 8 | Зарегистр. 22-09-2008 | Отправлено: 10:27 23-09-2008
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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
    Вообще, как-то все черезмерно сложно. И задачи на лету меняются. Похоже, что пока никому не понятно, что же должно получится в самом конце.

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:04 23-09-2008 | Исправлено: dneprcomp, 21:12 23-09-2008
    q1wed



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Задача: есть список. Необходимо его перемешать, то есть выполнить random.
    В списке есть пункты с подпунктами (a, b, c,) они естественно при перестановке не должны "оторваться" от своего родного пункта.
     
    Этот список - это список с вопросами, к нему прилагается еще один файл - с ответами, если возможно еще как то синхронно перемешать ответы и вопросы, что бы к примеру вопросу № 5 правильный ответ тоже был под номером 5,  - вообще чудно будет!

    Всего записей: 208 | Зарегистр. 02-03-2007 | Отправлено: 06:59 24-09-2008 | Исправлено: q1wed, 09:30 24-09-2008
    pharmakis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2dneprcomp  
     
    пасиба, щас попробуем))
    ненене) задачи не меняютсо, она у мну одна... просто расстановка $ там есть одна из основных частей..
    насчет черезмерно сложно: исчо рас, я действительно очень мало знаю VBA, а к сожалению реализовать надо на нем. Потому таг "из-за печки" и получается...
     
    Добавлено:
    О! решила проблему с циклической расстановкой закладок! две проблемы из трех решены))
    Еще раз спасибо большое dneprcomp, до меня бы просто таг не дошло)))

    Всего записей: 8 | Зарегистр. 22-09-2008 | Отправлено: 08:33 24-09-2008
    pharmakis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Решила называется:-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

    Всего записей: 8 | Зарегистр. 22-09-2008 | Отправлено: 09:06 26-09-2008
    Knigaz

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как программно определить, поместится ли текущий документ при печати на печатный лист (по правой границе)? Чтобы выяснить, нужно ли менять ориентацию страницы на альбомную или там уменьшать шрифт...

    Всего записей: 8 | Зарегистр. 21-09-2008 | Отправлено: 19:07 27-09-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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
     

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 17:38 28-09-2008
    NastyaS1

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ПОМОГИТЕ ПОЖАЛУЙСТА!!!
    Написать макрос, для Microsoft Word упорядочивающий и нумерующий абзацы в текущей главе:
    1)    по умолчанию без упорядочивания
    2)    с выбором типа нумерации и способа упорядочивания и размещения абзацев на странице
     
    Макрос 2) должен выполняться только в области его действия, в случае запуска макроса вне области действия должно выдаваться сообщение об ошибке.
    Макрос должен размещаться в шаблоне пользователя или документе и не копироваться в Normal.dotю Макрос не должен препятствовать выполнению стандартных макросов. Дополнительные условия работы макроса должны быть описаны в комментариях.

    Всего записей: 1 | Зарегистр. 30-09-2008 | Отправлено: 23:58 30-09-2008
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, подскажите, пожалуйтса: если в режиме Структуры нажать на крестик заголовка одного уровня, то выделятся все последующие подуровни. Но в макросе это все отображается лишь как, например:

    Код:
        ActiveWindow.ActivePane.View.Type = wdOutlineView
        Selection.Copy 'здесь я просто копирую выделение в буфер

    Как же все-таки в Бэйсике сделать выделение?

    Всего записей: 3142 | Зарегистр. 29-09-2005 | Отправлено: 11:01 01-10-2008
    DachnikGarik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, подскажите пожайлуста! Я в VBA только начинаю разбираться. Надо осуществить следующее. Из ячеек в EXcell (ну уж эксель в скрытом режиме я запущу) вытащить значения и вставить в WORD, причем в определенные места. Думаю осуществить такое через коды полей. С полями работал кто-нибудь? Подскажите как из другого документа ну или из буфера обмена на худой конец вставить текст в заранее заготовленное поле. Значений много, каждое поле будет иметь уникальный идентификатор.

    Всего записей: 6 | Зарегистр. 01-07-2008 | Отправлено: 11:30 01-10-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NastyaS1

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

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

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

    не ясно, что же тогда в этом случае должен делать макрос...

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 12:58 03-10-2008
    KEY



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DachnikGarik
    В вашем случае самый простой(и красивый) способ - слияние!
     

    Всего записей: 267 | Зарегистр. 23-12-2001 | Отправлено: 23:24 04-10-2008
    mrdime



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа,  
    Стоит такая задача. Есть около 200 файлов Word c адресами фирм (1файл - 1 адрес). Есть листы формата А4 с наклейками. Надо организовать печать адресов на наклейках. Планирую слить все в один файл Ворд, экспортировать в Excel т.е. сделать в нем своеобразную базу данных и из нее печатать наклейки в Ворде. Естественно руками это делать накладно. Пишу небольшую прогу. Возникает вопрос: как экспортировать из Ворда данные в Excel? Использую MS Office 2007. Кто сталкивался с подобной задачей, буду благодарен за советы.
    Добавлено
    Уже со всем разобрался сам.

    Всего записей: 2975 | Зарегистр. 04-01-2005 | Отправлено: 20:29 07-10-2008 | Исправлено: mrdime, 23:35 08-10-2008
    VBAkraft



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня вопрос, касающийся элементов ActiveX.
    Как к созданной полосе прокрутки "подцепить" значение ячейки в Экселе? (в экселе это проще простого - нужно это сделать из другого приложения). Как, например, в VBA прописать, чтобы двигая бегунок в вордовском документе вверх-вниз, менялось значение ячейки в экселевском документе?

    Всего записей: 1 | Зарегистр. 07-10-2008 | Отправлено: 08:43 08-10-2008
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru