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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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  
     
     
    Родственные топики:
  • Вопросы по работе с Microsoft Word - часть 1, часть 2
  • Технические проблемы с Microsoft® Office® 2016 | Microsoft® Office® 2013 | Microsoft® Office® 2010 | Microsoft® Office® 2007 | Microsoft® Office® 2003
     
     
  • Excel VBA все вопросы по Excel VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы/готовые решения:
  • функция возвращает список закладок в документ
     
    Перечень основных ColorIndex'ов из MSDN
     
    - стартовый вопрос топика...

  • Всего записей: 2928 | Зарегистр. 27-09-2001 | Отправлено: 03:05 01-06-2005 | Исправлено: ALeXkRU, 11:40 02-07-2018
    Fsp050

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ptr73
    это долго, а тем более такие работы писать часто приходится. Я могу и заплатить за макрос)) если вы способны его написать

    Всего записей: 345 | Зарегистр. 02-04-2011 | Отправлено: 10:59 02-05-2015
    ptr73

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

    Всего записей: 251 | Зарегистр. 03-07-2007 | Отправлено: 11:13 02-05-2015
    polk90



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите, как в таблице убить первый и второй столбец? (или два раза первый)
    (если поможет, таблица создается в резкльтате работы макроса, кроме этой таблицы на листе ничего нет)
     
    upd. нашел Selection.Tables(1).Columns(1).Delete

    Всего записей: 4627 | Зарегистр. 19-12-2002 | Отправлено: 20:41 17-06-2015 | Исправлено: polk90, 00:21 18-06-2015
    polk90



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день,  
    подскажите с макросом
    есть таблица отсортированная по одному из столбцов, нужно разбить таблицу ориентируясь на группы получившиеся в отсортированном столбце.
    чтоб было понятнее привел примеры того как есть и что должно получится,  
    файл там http://rghost.ru/private/7VNT6lnZQ/e7c732f1d338a36a48d883feff7fa445

     
    решил.

    Всего записей: 4627 | Зарегистр. 19-12-2002 | Отправлено: 21:52 03-07-2015 | Исправлено: polk90, 19:44 05-07-2015
    Leagnus

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Интересно, можно ли покрасить панель Навигации слева, где высвечиваются закладки / заголовки документа, страницы документа или просмотр результатов поиска, в тёмный цвет?

    Всего записей: 146 | Зарегистр. 12-09-2008 | Отправлено: 12:07 11-07-2015
    freed

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

    Цитата:
    А всё-таки, как разблокировать заблокированный проект VBA ("Project is unviewable")?

    кому-нибудь  удалось это сделать

    Всего записей: 1045 | Зарегистр. 07-05-2005 | Отправлено: 21:25 19-08-2015
    valmont



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    на vba заполняю шаблон, значения заношу в созданные закладки, в word 2003 всё работает нормально, а в 2007 то работает, то выдаёт "запрашиваемый номер семейства не существует" + копирует и вставляет не отформатированный текст, если таблица то без ячеек, хотя иногда!!! срабатывает как надо.
    дур дом какой-то.
     
    может с 2007 какие-то нюансы появились в работе?

    Всего записей: 1114 | Зарегистр. 17-09-2002 | Отправлено: 17:12 19-11-2015
    mrdime



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, что за хрень???
    На одном компе: Word 2010 (стоял раньше) и 2013 (стоит теперь) включен режим "Отключить все макросы с уведомлением об этом" (Disable all macros with notification)
    Все макросы записаны в шаблоне Normal.dotm
    Ворд запускается и все макросы работают без каких-либо предупреждений.
    На другом компе:
    Word 2010, все то же самое, НО когда Ворд запускается, получаю сообщение, о наличии макросов + кнопка "Включить содержимое". Жму кнопку - ничего не происходит, кнопки назначенные для моих макросов как не работали, так и не работают, появляется сообщение, что макрос не найден. Помогает только переход в режим включения всех без исключения макросов.
    В чем дело? Почему ОДНИ И ТЕ ЖЕ настройки приводят совершенно к разным результатам на разных компах?
    Первый раз с таким цирком сталкиваюсь.
    На обоих стоит Windows 7 x64 Ultimate SP1

    Всего записей: 2656 | Зарегистр. 04-01-2005 | Отправлено: 04:05 21-11-2015
    alexvakula

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

    Всего записей: 1 | Зарегистр. 13-02-2016 | Отправлено: 16:19 13-02-2016
    KDPoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Выделить, значит задать Selection.Start и Selection.End
    Поискать позицию слова "Понедельник" можно функцией InStr()

    Всего записей: 390 | Зарегистр. 08-08-2006 | Отправлено: 20:13 13-02-2016
    svs123456789

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не видел ли ктонибудь процедуры для
    применения всем таблицам в файле свойств выравнивание по ширине окна + установить заголовки ?

    Всего записей: 2488 | Зарегистр. 10-04-2003 | Отправлено: 15:27 29-08-2016
    tezarius

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

    Всего записей: 26 | Зарегистр. 16-02-2007 | Отправлено: 11:23 06-09-2016
    Dronton2

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tezarius
    сначала нужно понять, что вы подразумеваете под изменениями:
    - поменяли что-то в тексте документа (т.е., изменения в последовательности букв)
    - поменяли что-то в стилях + где-то в тексте поменяли размер шрифта, интервал, отступы и т.п.
    - документ является формой, изменять можно только значения в полях формы.
     
    и в каком виде изменения должны храниться в базе данных.
     
    Исходники программ сравнения документов можно посмотреть на http://winmerge.org/ или http://kdiff3.sourceforge.net/

    Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 13:20 06-09-2016
    tezarius

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dronton2
    1) загрузили документ Word.
    2) сравнили с базой ( если база пустая, то добавили эталон для сравнения)
    3) сохранили изменения для будущих сравнений.
     
    - поменяли что-то в тексте документа (т.е., изменения в последовательности букв, слов)   - Да.
    - поменяли что-то в стилях + где-то в тексте поменяли размер шрифта, интервал, отступы и т.п. -Нет
    - документ является формой, изменять можно только значения в полях формы. - Нет
     
    Хранить в базе должны только изменения. Хранить абзацами ( они определяются по началу - типа 1.1 , 1.2, 1.1.1), другим полем добавлять дату сохранения.
     
    Как часть решения можно взять отсюда http://www.cyberforum.ru/vba/thread615562.html
     
    P.S. http://winmerge.org/ это с++, хотелось бы все таки реализация на VBA.

    Всего записей: 26 | Зарегистр. 16-02-2007 | Отправлено: 14:09 08-09-2016
    Dronton2

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tezarius
    Ну, если минимальный кусок равен абзацу (и нумерация абзацев упорядочена), то тогда WinMerge - излишне сложный инструмент. Но посмотреть общую логику их алгоритма нужно обязательно.

    Цитата:
    С чего начать? какие функции использовать?
    Начать нужно не с поиска функций, а с составления алгоритма.
    Представьте, что каждый абзац - это строка. Тогда документ представляет из себя список строк. Значит, вам нужно сравнить два списка строк и определить, какие строки были изменены, какие - удалены, и какие добавлены.
    Если в документе не может быть одинаковых абзацев - задача проста:
    1. Каждый абзац старого документа сравниваете с каждым абзацем нового документа. Если они равны, устанавливаете для этих абзацев флаг "равно".
    2. Последовательно проходите по абзацам старого документа. Находите подряд идущие абзацы, без флага "равно". Сравниваете их количество с количеством соответствующих абзацев из нового документа. Если количество равно, то каждый из этих абзацев был изменён на соответствующий абзац из нового документа. Если в старом документе количество этих абзацев меньше, чем в новом, значит, часть абзацев была изменена, а часть - удалена. Если больше - значит, часть абзацев была изменена, а часть добавлена.
    Таким образом, для каждого абзаца из старого документа установлен один из признаков:
    - равен абзацу из нового документа
    - изменён в новом документе (и указатель на соответствующиё абзац в новом документе)
    - удалён
    в новом документе нужен только один признак:
    - добавлен
     
    И сохраняете в базу данных: для всех абзацев из старого документа, у которых не установлен признак "равен" добавляете записи с указанием признака и:
    - для удалённых: порядкового номера абзаца в старом документе
    - для изменённых: порядкового номера абзаца в старом документе и текста соответствующего нового абзаца
    - для добавленных: порядкового номера абзаца в старом документе, после которого добавляется новый абзац и его текста.
     
    Это приблизительно и вкратце.
     
    Если в документе может быть несколько одинаковых абзацев - задача сравнения существенно усложнится.

    Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 15:28 08-09-2016
    Dronton2

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tezarius
    Похоже, что я сильно погорячился с простотой алгоритма.
    Рассмотрим примитивный пример:
    Пусть документ состоит из 4 абзацев. Каждый абзац - из 1 буквы:

    Код:
    A
    B
    C
    D

    Для удобства, запишем такой простой документ в виде строки:
    ABCD
    Допустим, что в изменённом документе все абзацы переставили в обратном порядке:
    ABCD > DCBA
    В этом случае - всё в порядке: есть 4 изменения: A>D, B>C, C>B, D>A.
    Рассмотрим другой вариант изменённого документа: первый абзац переместили в конец документа:
    ABCD > BCDA
    Логично было бы предположить, что здесь всего 2 изменения: 1-й абзац удалён и после последнего абзаца добавлен абзац с текстом "A"
    Но приведённый выше алгоритм скажет, что здесь 6 изменений:
    1. Перед первым абзацем добавлен B.
    2. Затем добавлен C
    3. Затем добавлен D
    4. После абзаца A удалён абзац B
    5. Затем удалён абзац C
    6. Затем удалён абзац D
     
    Поэтому, лучше посмотреть исходники WinMerge и т.п. компонентов

    Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 09:20 09-09-2016 | Исправлено: Dronton2, 09:20 09-09-2016
    Masutin



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть группы 4-x строк (абзацев) простого текста c пустой строкой между группами. Можно ли применить к строкам стили Heading 1…4, как-то пометив строки или без меток? Способ без скрипта: добавление к строкам меток <h1>…<h4> и открытие как .htm.

    Всего записей: 280 | Зарегистр. 23-02-2007 | Отправлено: 17:08 02-11-2016
    svs123456789

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пожалуйста, к
    как заменить все вхожения выражения из
    от 1 до 3 цифр подряд, затем точка , и снова от одной до трех цифр - все жирным текстом  
    на пробел

    Всего записей: 2488 | Зарегистр. 10-04-2003 | Отправлено: 19:48 03-12-2016
    Vadim39



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    svs123456789
    В строку поиска - <[0-9]{1;3}.[0-9]{1;3}>
    указать: подстановочные знаки, полужирный шрифт
    в строку замены - пробел

    Всего записей: 989 | Зарегистр. 11-04-2002 | Отправлено: 23:20 03-12-2016 | Исправлено: Vadim39, 23:53 03-12-2016
    angel1980

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу прощения за столь простой вопрос, но - как вставить текст до или после имеющейся таблицы? Как ни крутил .InsertBefore/After, текст дописывается внутри таблицы, а не вне её.

    Всего записей: 4 | Зарегистр. 15-06-2007 | Отправлено: 17:21 05-12-2016
    Открыть новую тему     Написать ответ в эту тему

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

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru