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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как в Word 2007-2010  с помощью команды выделить вставленный фрагмент

    Всего записей: 4 | Зарегистр. 08-09-2009 | Отправлено: 07:13 09-04-2011 | Исправлено: yuriisv, 07:29 09-04-2011
    kamadz



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

    Всего записей: 9 | Зарегистр. 16-08-2007 | Отправлено: 23:12 10-04-2011
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kamadz
    Параграфы получи через Document.Paragraphs
    Предложения в параграфе Document.Paragraphs(1).Range.Sentences. Отдельного объекта Sentence нет. Вот. Организуй списки параграфов, предложений в них и выбирай случайным образом для вставки, что проще, в новый документ.

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:29 11-04-2011 | Исправлено: AndVGri, 03:30 11-04-2011
    oshizelly



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

    Код:
    Selection.WholeStory
    Selection.LanguageID = wdEnglish

    Однако проблема в том, что после выполнения макроса весь текст остается выделенным. Соответтвенно, оказывется потерянным предыдущий фокус ввода.  
    Подскажите, что нужно дописать, чтобы после выполнеия макроса фокус  автоматически возрващался на исходную позицию, где он был до запуска макроса. Или что можно нажать руками, чтобы вернуть фокус на исходную точку.
     
    Ну и еще чтобы выделение  сбрасывалось, но это не критично, можно просто лишний раз нажать стрелку навигации или дописать что-нибудь вроде
    Код:
    Selection.MoveDown Unit:=wdLine, Count:=1

     
    Спасибо!
     
    :Добавлено:
    Частичное решение: дописать в конец макроса эмуляцию нажатия хоткея Shift+F5. Этот хоткей автоматически переместит фокус ввода к месту ввода последнего символа в документе, он же и снимает выделение.
    Однако нюанс в том, что место ввода последнего символа в документе - это не обязательно то же самое место, где находился курсор перед запуском макроса. Допустим, последнее изменение в документе было сделано но 110-й странице, а перед запуском макроса просматривалась 422-я...

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 16:20 11-04-2011 | Исправлено: oshizelly, 12:28 22-04-2011
    prestigo

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть обыкновенная пользовательская форма в MS Word 2003, на ней - ListBox.
    В ListBox-е не работает колесико скрола мышки для промотки списка.
    Есть варианты, как заставить это произойти?

    Всего записей: 314 | Зарегистр. 03-09-2006 | Отправлено: 14:57 20-04-2011
    Scorry_17



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите, люди добрые.
    Есть документ Word, в нём некоторое количество (около 4000) закладок (bookmarks). Некоторые «нулевой» длины, некоторые маркируют собой текст. Задача состоит в том, чтобы:
    1. найти закладку;
    2. извлечь её имя;
    2. поместить курсор ввода в её начало;
    3. вставить в это место извлечённое имя закладки;
    4. отформатировать введённый текст каким-нибудь заготовленным character style;
    5. удалить саму закладку;
    6. .... и по кругу, пока не кончатся закладки в документе.
     
    С программированием в ворде дела практически не имею, но иногда какие-то макросы худо-бедно редактирую.
    Не дайте помереть одному. Помогите, плиз!
     
    ЗЫЖ извините за несвоевременную отправку.

    Всего записей: 3 | Зарегистр. 19-06-2005 | Отправлено: 16:59 21-04-2011 | Исправлено: Scorry_17, 17:14 21-04-2011
    sashko1980



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите код макроса, чтобы сделать следующее:
     
    В документе Word 2007 есть элемент управления содержимым называемый "Исполнитель" в виде раскрывающегося списка вида "Иванов, Петров, Сидоров". Далее в документе есть другой элемент управления содержимым "Код исполнителя" (тоже в виде раскрывающегося списка), где каждой указанной выше фамилии соответствует числовой код, типа "1001, 1002, 1003".
     
    Как сделать, чтобы при выборе фамилии в одном элементе, в другом элементе управления содержимым автоматически подставлялся нужный числовой код?
     
    Заранее спасибо.
    Файл с примерами списков прилагается:
     
    пример файла

    Всего записей: 323 | Зарегистр. 01-03-2006 | Отправлено: 20:25 25-04-2011
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sashko1980
     
    в первом поле исправил значения на коды, по ним и будет "синхронизация", т.е. Смирнов С.С = 1003
    Подробнее...
     
    новый example1.docm

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 20:54 26-04-2011 | Исправлено: smirnvlad, 21:01 26-04-2011
    sashko1980



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

    Всего записей: 323 | Зарегистр. 01-03-2006 | Отправлено: 22:36 26-04-2011
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sashko1980
     
    сейчас считаются полные года, если надо неполные - надо удалить код между комментариями
    новый age.docm
     
    Подробнее...

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 10:37 27-04-2011
    Imanima

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Помогите пожалуйста решить задачку. Дело вот в чем:
    Имеем *.doc или *.docx файл. В нем находится текст. Текст разделен на абзацы. Есть программа, которая может выделять текст по абзацам: выделила абзац, через некоторое время сняла выделение и выделила следующий, потом опять сняла и так пока документ не закончится.  
     
    Так вот задача в чем: нужно, чтобы после того как было снято выделение с первого абзаца появлялось окно в котором бы показывалась картинка. Картинка любая. Картинку можно выбрать зарание. Все картинки лежат где-нибудь в папке(или гденьть еще) и вызываются по порядку.  
     
    То есть примерно такой алгоритм:
    выделился абзац---снялось выделение(в окне появилась картинка)---выделился следующий абзац---снялось выделение(в окне появилась другая картинка)---выделился третий абзац---снялось выделение(в окне появилась следующая картинка)
     
    помогите пожалуйста с кодом. если не трудно.

    Всего записей: 7 | Зарегистр. 29-01-2010 | Отправлено: 09:38 04-05-2011 | Исправлено: Imanima, 09:41 04-05-2011
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Imanima
    Так оно не трудно - такой примерно алгоритм
    в тот проект, где код добавляем форму, на ней размещаем объект Image
    Добавляем метод к форме, который будет вызываться кодом при смене выделения для вывода в Image.Picture = LoadPicture("d:\path\myimage.bmp").  
    В код смены выделений абзацев добавляем создание этой формы и вызов при смене выделения метода смены рисунка... И так далее....
    Что не выходит-то?

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 11:23 04-05-2011
    Imanima

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    Вы наверное будете доолго смеяться. С программированием на VBA у меня никак. Ну не то чтобы совсем. Я недавно начал изучать. Можите код выложить?

    Всего записей: 7 | Зарегистр. 29-01-2010 | Отправлено: 18:09 04-05-2011 | Исправлено: Imanima, 03:37 05-05-2011
    Imanima

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

    Всего записей: 7 | Зарегистр. 29-01-2010 | Отправлено: 06:37 08-05-2011
    smirnvlad

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

    Цитата:
    Ну что? Никто не поможет?

    а "Что не выходит-то?"
     
    Imanima
    поиском по теме можно было найти код который ищет файлы в папке, соединить со своим добавить AndVGri и всё получилось бы.
     
    Подробнее...

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 10:34 08-05-2011 | Исправлено: smirnvlad, 10:35 08-05-2011
    Imanima

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не получается написать программу так, как написано выше. Абзацы выделяет программа внешняя. Нужно в ворде просто учесть факт, что был выделен абзац и показать картинку. То что AndVGri, я не понял. Может покажете как надо?

    Всего записей: 7 | Зарегистр. 29-01-2010 | Отправлено: 19:39 08-05-2011
    biznesoft



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Вопрос следующий.
    Каждое воскресенье получаю файлы в формате *. doc (ворд) - 150-200 файлов.
    Нужно не открывая файлы вытянуть из каждого файла первый абзац и сохранить в новый документ ВОРД.
     
    Основное требование - быстрое выполнение этого задания.
     
    Все благодарю.

    Всего записей: 853 | Зарегистр. 31-03-2011 | Отправлено: 20:50 10-06-2011
    suomifinland



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята помогите...  
     
    Проблема такая, есть папка в которой более 50 файлов документов, размером от 300 Кб до 5 Мб в каждом файле есть одна и  таже фраза "Статья отнесена к разделу"
     
     
    Задача : Как сделать так чтобы одновременно, эта фраза, пакетно удалялась  из предложенных документов. Я в макросах не сильна, если не сказать ВООБЩЕ ...
     
    Если можно.., помогите ребята...
     
     
    P.S. Word 2007, Windows 7 максимальная...

    ----------
    Мы на горе всем буржуям, мировой пожар раздуем... А.Блок.

    Всего записей: 5280 | Зарегистр. 16-04-2006 | Отправлено: 22:58 11-06-2011
    IvANANvI

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    biznesoft
    Попытаюсь вам помочь. Сам не писал кода на VBS, взял готовый.  В нем смысл в создании чистого файла Word, последовательное открытие и закрытие всех файлов DOC (rtf) в текущем каталоге с выполнением макросов Word (VBA). Желательно, чтобы макросы VBA были уже сохранены в шаблоне ворда с теми же именами. Скрипт VBS и VBA файлы должны лежать в директории с файлами.
    На выходе открытый файл с 1-ми абзацами, друг за другом.
     
    Вот ссылка на файл: http://rghost.ru/10458571
     
     
    suomifinland Задача практически аналогичная, чуть переписать первый макрос ворд, под удаление постоянной строки. Второй VBA (PastePage.vba) закоментить. В VBS закоментить строки по созданию файла, а можно и не делать этого.

    Всего записей: 762 | Зарегистр. 29-11-2007 | Отправлено: 01:24 12-06-2011 | Исправлено: IvANANvI, 11:36 12-06-2011
    suomifinland



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Все было бы просто замечательно, если бы не одно.., НО, я совершенная профанка в программировании, хотя и не блондинка...

    ----------
    Мы на горе всем буржуям, мировой пожар раздуем... А.Блок.

    Всего записей: 5280 | Зарегистр. 16-04-2006 | Отправлено: 01:48 12-06-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