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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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



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

    Цитата:
    Первый из выделенных абзацев  
    Selection.Paragraphs.First.Range.LanguageID = wdEnglishUS

    Спасибо, добавил себе в список макросов.
    Но вообще-то я спрашивал про текущий абзац, а не про выделенный. Что-то там, навероное, должно быть вроде CurrentParagraph, нет?

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 00:33 22-06-2011
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    oshizelly
    Текущий абзац (где курсор) и есть первый. Он же и последний если ничего не выделено.
    А вообще для отладки советую добавлять переменные (Selection в данном случае) в наблюдаемые (или как то так) - пункт "Add Watch..." и выполнять макрос пошагово - кнопка F8. При исполнении в окне Watches эта переменная будет отображаться и можно посмотреть и выбрать нужные данные для использования. Очень облегчает поиск нужного. Или отследить изменения и вычислить ошибку.

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 01:19 22-06-2011
    Zjaka



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.  
     
    Долго выбирала тему, в которой разместить сообщение. Флудить и создавать новую тему не стала. Если "ошиблась адресом" - прошу покорно извинить и направить в нужное русло.
     
    ОПИСАНИЕ ЗАДАЧИ.
    - Есть диаграмма (организационная или блок-схема... - со словесным содержимым элементов), построенная по тексту вручную. Т.е. части текста разнесены по тем или иным элементам диаграммы;
    - Текст подвергается редактированию - удалению/добавлению некоторых фрагментов, или даже добавлению.
     
    ЗАДАЧА. Диаграмма должна автоматически "изменяться за текстом". Если не полностью, то хотя бы должны отмечаться элементы диаграммы к удалению/добавлению.
    Абстрагируемся, и предположим, что начальная постановка задачи не накладывает ограничение на используемое ПО, среды, методы...
     
    Работа, затрагивающая выявление изменений в тексте, в данном случае, по моему мнению, сводится к применению аппарата строкового анализа. А вот к чему сводится добрая половина работы, касающаяся диаграмм?
     
    ВОПРОС. Какими средствами можно с меньшими усилиями реализовать данную задачу (а еще у'же - организовать "связь между диаграммой и текстом, по которому она построена"? Стоит ли использовать офисное программирование? Например, выполнять диаграмму в MS Visio (MS Word-таки убогий в этом плане) или OO.o и дописывать функционал в VBA/StarBasic?
    Или, может, имеет смысл решат задачу отдельно в "полноценной" среде программирования? - Но как тогда распознавать отдельные части диаграммы во входном файле для дальнейшей манипуляции с ними? Или, может, организовать подгрузку того же Visio/OO.o средствами среды... Есть или нет такая возможность?
     
    Вобщем, нужны рекомендации. Буду крайне признательна. Я в начале "пути" и не знаю, с какой стороны взяться за решение.

    Всего записей: 11 | Зарегистр. 24-04-2011 | Отправлено: 10:34 05-07-2011
    Zjaka



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хочется знать, каким инструментом пользоваться надежнее, проще и быстрее - VBA или чем-то другим?  Время ограничено, а потратить его и узнать, что колесо давно изобрели, будет обидно.
     
    Темы для visio в "прикладном ПО" не нашла. Пожалуйста ответьте сюда или укажите, куда перенести тему, если это крайне необходимо.
    Всем спасибо.

    Всего записей: 11 | Зарегистр. 24-04-2011 | Отправлено: 18:45 05-07-2011
    Zjaka



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос все еще актуален. Заранее признательна за ответы.

    Всего записей: 11 | Зарегистр. 24-04-2011 | Отправлено: 07:18 27-07-2011
    RoMT

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zjaka
    О Visio общаются в Microsoft Visio и лучше там спросить.
     
    Можно позадавать вопросы на форуме Ссылка  и посмотреть, что и как можно сделать в визио, на сайте Ссылка
     
    Если честно, не понял поставленную задачу. А именно, что подразумевается под автоматическим изменением диаграммы.  
    В принципе в Visio и без VBA с диаграмамми можно много что наделать

    Всего записей: 32 | Зарегистр. 28-12-2005 | Отправлено: 08:33 27-07-2011
    SergBSI

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите может существкет где готовое решение для Word:
    Задача - есть несколько файлов (к примеру главы книги каждая глава - отдельный файл) необходимо организовать "сплошные" ссылки - перекрестные и концевые те чтобы например концевые ссылки были в отдельном файле и естественно во всех файлах также "шла" обновляемая нумерация
    Подобное существует в др. редакторах например ТеХ  
    в самом Wordе "стандартных" возможностей подобного нет принципе

    Всего записей: 517 | Зарегистр. 09-12-2003 | Отправлено: 22:20 07-08-2011
    Zjaka



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RoMT, спасибо за ссылки. Но вот только я не привязываю вопрос к аппарату Visio. Хочу хотя бы концептуально понять, на чем и в каком ключе можно и лучше и проще всего сделать.
    Пробовала еще обсуждать на других форумах, но пока ничего путнего не добилась.
     
    По поводу ЗАДАЧИ.  
    Упрощенный пример того, что нужно реализовать:
     
    1. Есть текст: "Мама мыла раму".
    Пользователь должен построить по нему диаграмму. Первый раз он это делает самостоятельно, вручную.
     
    1.1. Пользователь использует определенную нотацию для создания диаграммы.
    Нотация известна. Все элементы этой нотации названы (например, прямоугольный блок, овальный блок, стрелка и т.п.). В соответствие элементам нотации поставлен, например, цвет (красный - прямоугольный блок, синий - стрелка... и т.п.). Можно не использовать цвета, а создать таблицу и наполнять ее: в зависимости от того, куда в таблице пользователь отнесет фрагмент текста, ему присвоятся соответствующие свойства.
     
    1.2. Пользователь просматривает текст и отмечает (как ему надо, в соответствие с определенной нотацией) только те элементы, которые будут принимать участие в диаграммах.
    Пример: "маму" отмечает красным, "мыла" - синим, "раму" - красным.
     
    1.3. Происходит автоматическая генерация диаграммы. Блоки в нужном количестве и качестве добавляются на лист (2 прямоугольных и 1 стрелка в нашем примере). Блоки наполнены содержимым - текстом.
     
    1.4. Пользователь вручную соединяет блоки между собой. Как это необходимо.
     
    2. Происходит изменение текста.
    Новый текст: "Мама и Вася моют раму".
     
    2.1. Старая строка текста сравнивается с новой.
    Выясняется, что добавилось: "и Вася", "моют" вместо "мыла".
     
    2.2. Пользователю демонстрируются изменения в тексте (извлекаются, а лучше даже подсвечиваются внутри остального текста).  
     
    2.3. Пользователю предлагается принять решение - что делать с изменениями в тексте? - пометить их как новые части диаграмм или проигнорировать.  
     
    2.4 Вместо "мама" пользователь отмечает красным "мама и вася".... Вместо "мыла" - "моют".
     
    2.5. Генерируется новая диаграмма.
     
    2.6. Пользователь вручную повторяет действия из п. 1.4.

    Всего записей: 11 | Зарегистр. 24-04-2011 | Отправлено: 13:44 15-08-2011
    IvANANvI

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SergBSI
    В ворде тоже давно есть такая возможность. (Описываю 97-2003 ворд)
    1. Вид структура
    2. Создают гавный документ (появляется новая панель структуры)
    3.  Потом добавляют вложенные, отдельные ваши документы.
    4. Получается один общий документ. Концевые сноски и содержание удобно оставлять в главном документе.

    Всего записей: 762 | Зарегистр. 29-11-2007 | Отправлено: 15:34 15-08-2011 | Исправлено: IvANANvI, 15:36 15-08-2011
    RoMT

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zjaka,  с концептуальностью я вряд ли помогу, но попытаюсь описать немного сумбурно как я бы решил используя Visio
     
    отписался тут, так как все-таки больше описано работа в Visio

    Всего записей: 32 | Зарегистр. 28-12-2005 | Отправлено: 19:58 15-08-2011
    clstl

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как в тексте Word XP програмно заменить слово, например, "молоко" полем со списком где первым словом будет "молоко", а ниже нужные значения: "кефир", "сметана", "творог". И с помощью элемента управления "поле со списком" вставить в текст нужное в данном случае?  
     

    Всего записей: 11 | Зарегистр. 30-01-2005 | Отправлено: 01:09 18-08-2011
    Gena1971



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

    Код:
        Selection.Range.ContentControls.Add (wdContentControlComboBox)
        Selection.ParentContentControl.Title = "молочные продукты"
        Selection.ParentContentControl.Tag = "молоко"
        Selection.ParentContentControl.DropdownListEntries.Add Text:="молоко", Value:="молоко"
        Selection.ParentContentControl.DropdownListEntries.Add Text:="кефир", Value:="кефир"
        Selection.ParentContentControl.DropdownListEntries.Add Text:="сметана", Value:="сметана"
        Selection.ParentContentControl.DropdownListEntries.Add Text:="творог", Value:="творог"
        Selection.ParentContentControl.Range.Text = Selection.ParentContentControl.DropdownListEntries.Item(3).Text
        Selection.ParentContentControl.LockContentControl = True
     

    Последняя строчка для невозможности удаления из текста.
    Можно это все в буфер обмена и заменять содержимым буфера обмена.
    Третья строчка не разбирался для чего.

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 14:04 18-08-2011
    clstl

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо, попробую, результат сообщу.
     
    Приятно иметь дело!

    Всего записей: 11 | Зарегистр. 30-01-2005 | Отправлено: 22:39 18-08-2011
    slonni

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно просмотреть доступные цветовые схемы с помощью VBA ?

    Всего записей: 2 | Зарегистр. 29-07-2010 | Отправлено: 23:05 22-09-2011
    sashko1980



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Прошу помочь с кодом для такой задачи: есть 2 элемента управления содержимым типа "выбор даты". Первый называется "дата госпитализации", второй - "дата выписки". Далее есть третий элемент управления типа "текст" называемый "количество дней в стационаре". Нужно чтобы после заполнения первых двух полей автоматически считалось количество дней в третьем поле. С условием, что день госпитализации и день выписки в сумме дают один день ( то есть, дата госпитализации - 1 января 2011, дата выписки - 3 января 2011, дней в стационаре -2).
    Пример файла: days.docx
     
    Для похожей задачи, где по разнице двух дат вычислялся возраст, прекрасный код подсказал smirnvlad
     
    Пытался изменить этот код, чтобы считалась разница в днях, но не осилил (не получилось, чтобы правильно считалась разница при переходе дат через месяц или год). Очень надеюсь, что smirnvlad откликнется и на этот раз

    Всего записей: 323 | Зарегистр. 01-03-2006 | Отправлено: 00:38 09-10-2011 | Исправлено: sashko1980, 00:49 09-10-2011
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sashko1980
    в том коде поменять строку
    yd = DateDiff("yyyy", dB, dR)
    на
    yd = DateDiff("d", dB, dR)
    а между комментариями - удалить
     
    ворда под рукой нет, не проверял

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 20:42 09-10-2011
    sashko1980



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    smirnvlad
    Работает! Спасибо, вот все как просто. А я менял дни на годы в другой строке.

    Всего записей: 323 | Зарегистр. 01-03-2006 | Отправлено: 21:45 10-10-2011
    rrromano



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

    Цитата:
    Как можно просмотреть доступные цветовые схемы с помощью VBA ?

     
    Не нашёл способа. Может, есть, но уж очень экзотический.

    Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 10:47 13-10-2011
    slonni

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А как сделать так чтобы при изменении цветовой схемы цвет текста не менялся автоматичски?

    Всего записей: 2 | Зарегистр. 29-07-2010 | Отправлено: 23:35 14-10-2011
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rrromano
    Чего ж экзотический?
    Лежат Environ$("ProgramFiles") & "\Mircrosoft Office\Document Themes " & Mid$(Application.Version, 1, InStr(Application.Version, ".") - 1)

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 08:54 17-10-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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