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

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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alexey87
    Так может об excel речь? Это там скрывается вроде строки/столбцы и плюсиком раскрывается.
    А в ворде никогда не видел функции скрытия ячеек.
     
    ALeXkRU

    Цитата:
    ЗЫ: создать ещё проще можно: включить запись макроса; выделить столбец; правый клик/скрыть; остановить макрос и смотреть, что получилось..

    При записи макроса контекстное меню мыша в ворде не работает. Надо искать всё в меню и кнопками.

    ----------
    Фашисты будущего будут называть себя антифашистами - Черчилль
    Кому я должен, я всем прощаю...

    Всего записей: 2566 | Зарегистр. 25-01-2005 | Отправлено: 18:17 09-01-2014
    ALeXkRU



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

    Всего записей: 11768 | Зарегистр. 03-12-2003 | Отправлено: 18:52 09-01-2014 | Исправлено: ALeXkRU, 21:13 09-01-2014
    Alexey87

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

    Всего записей: 655 | Зарегистр. 27-01-2008 | Отправлено: 17:02 10-01-2014
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нужен совет. есть vbs скрипт выводящий отчет в word. Отрабатывает на ура если в word нет надстроек. На компе, где word стоит с надстройкой (орфо), начинаются грабли: выскакивает при автоматическом закрытии word сообщение о том что шаблон normal.dotm занят другим приложением нужна нажать ОК и еще отказаться от сохранение шаблона normal.dotx. Как на vbs обойти сею проблему?

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 21:53 28-01-2014
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    msmih
    Да какой нибудь конфликт переменных, подпрограмм или ещё чего. Стоит для начала просто пошагово пройти по программе - выяснить на каком месте сбоит и откорректировать скрипт.

    ----------
    Фашисты будущего будут называть себя антифашистами - Черчилль
    Кому я должен, я всем прощаю...

    Всего записей: 2566 | Зарегистр. 25-01-2005 | Отправлено: 23:42 28-01-2014
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gena1971
    прошел. скрипт простейший. Видимо, неправильно поставил диагноз. Проблема в следующем - появляется вышеописанная ошибка если открыт еще один документ. То есть как скриптом правильно сохранить все открытые документы и выйти из word? или как закрыть только активный (сформированный скриптом) документ?

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 19:46 29-01-2014
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    msmih
    Ну так в скрипте и изменить команду закрытия ворда на команду закрытия окна. Я в этих командах сильно не разбираюсь. Небыло нужды открывать/закрывать из vba файлы. Но в ветке по ворду я недавно модифицировал чужой скрипт. Там можно достать нужные команды.
     
    Добавлено:
    Стоп, я чего то тоже недочитал. VBS - это же не VBA. Т.е. у тебя скрипт внешний открывает ворд и закрывает его? Тогда это немного не то. VBS я не знаю как с вордом взаимодействует.

    ----------
    Фашисты будущего будут называть себя антифашистами - Черчилль
    Кому я должен, я всем прощаю...

    Всего записей: 2566 | Зарегистр. 25-01-2005 | Отправлено: 21:50 29-01-2014
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gena1971
    буду дальше думать. хотя можно передать управление на внутренний макрос. Как временная заглушка. на этом остановился пока.
    to all
    есть макрос, который приведен ниже. Ищет текст между тире, выделяет, подсвечивает красным. Работает отлично.
    Как сделать чтобы вместо подсвечивания изменял формат найденного текста на курсив. Упарился вдрызг. пробовал разные варианты, ничего толком не получается. буду признателен за совет.

    Код:
     
    Sub format()
    Dim r
    Set r = ActiveDocument.Range
    Selection.HomeKey wdStory
    With r.Find
       ' .ClearFormatting
        .Text = "- * - "
        .Forward = True
        .Wrap = wdFindContinue
        .format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
        If .Execute Then
            ActiveDocument.Range(r.Start + 1, r.End - 1).Select
           .HitHighlight .Text, HighlightColor:=wdColorRed
     
        End If
     
    End With
    Selection.HomeKey wdStory
    End Sub  

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 22:25 29-01-2014
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время, msmih
    Активный документ в VBS сохраняется так же, как и в VB. Можно через ActiveDocument.Save, можно через объект, соответствующий конкретному документу (присваивается при открытии/создании). Пример Задачи на bat-файлах 11.
    Сам скрипт можно?
    Попробуйте (сейчас проверить не могу)

    Код:
     
    If .Execute Then  
       Set Selection = ActiveDocument.Range(r.Start + 1, r.End - 1).Select
       Selection.Font.Italic = True
       Selection.Font.Color = wdColorRed  
    End If
     


    Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 22:42 29-01-2014
    Gena1971



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

    Цитата:
    Можно через ActiveDocument.Save, можно через объект, соответствующий конкретному документу (присваивается при открытии/создании).  

    Если так, возможно и ActiveWindow.Close сработает закрыв только текущее окно, но не весь ворд. Это я к этому
    Цитата:
    или как закрыть только активный (сформированный скриптом) документ?

     


    ----------
    Фашисты будущего будут называть себя антифашистами - Черчилль
    Кому я должен, я всем прощаю...

    Всего записей: 2566 | Зарегистр. 25-01-2005 | Отправлено: 00:42 30-01-2014
    msmih



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

    Цитата:
    Код:
     
    If .Execute Then  
       Set Selection = ActiveDocument.Range(r.Start + 1, r.End - 1).Select
       Selection.Font.Italic = True
       Selection.Font.Color = wdColorRed  
    End If
     
     

     
    На этом этапе и возникает загвоздка. обрабатывает только первое найденное совпадение. Дальше не ищет.

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 05:58 30-01-2014
    panda3

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    msmih
    Ваще непонятен смысл этих телодвижений для простой операции поиска/замены.
     

    Код:
    With ActiveDocument.Range.Find
      .ClearFormatting
      .Text = "- * -"
      .Forward = True
      .Wrap = wdFindContinue
      .format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = True
      .MatchSoundsLike = False
      .MatchAllWordForms = False
      With .Replacement
        .ClearFormatting
        .Text = ""
        .Font.Italic = True
        .Font.Color = wdColorRed
      End With
      .Execute Replace:=wdReplaceAll
    End With

    Всего записей: 203 | Зарегистр. 06-02-2007 | Отправлено: 10:15 30-01-2014
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    panda3
    низкий поклон! все отлично сработало.
     
    to all
    задам еще один вопрос. из разряда vbs\vba.
    Пытаюсь с помощью xmlhttp.responsetext получить текст с сайта.
    Но получаю только часть текста стабильно 3800 символов).
    ставил условия xmlhttp.ReadyState = 4, if xmlhttp.status = 200 условия выполняются, но все равно приходит только часть текста.
    В мануилах прочитал, что xmlhttp.responsetext по объему не лимитируется.
    где может быть проблема?

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 20:37 30-01-2014
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    msmih
    Не знаю. Пример, пожалуйста. Может что в обработке?
    То, что ниже сохраняет файл размером около 600 кб.

    Код:
     
    Set XMLHTTP = CreateObject ("Msxml2.ServerXMLHTTP.6.0")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set objTextStream=FSO.OpenTextFile("output.txt",2,1)  
    XMLHTTP.Open "GET", "http://forum.ru-board.com/misc.cgi?action=printtopic&forum=33&topic=5312", false
    XMLHTTP.Send
    If ((XMLHTTP.readyState = 4) AND (XMLHTTP.status=200)) Then objTextStream.Write XMLHTTP.responseText
     

    PS. Программирование "удобняшек" на VBScript (Часть 2)
    PPS. MsgBox Len(XMLHTTP.responseText)

    Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 21:25 30-01-2014 | Исправлено: Alex_Piggy, 21:32 30-01-2014
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Буду признателен еще за вот какую подсказку. Как подсчитать с помощью VBA число символов в параграфе (word)? и при превышении (ну скажем 1000 символов) - удалить параграф?

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 18:07 01-02-2014 | Исправлено: msmih, 18:11 01-02-2014
    Alex_Piggy

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

    Код:
     
    For Each Paragraph In ActiveDocument.Paragraphs
            If (Paragraph.Range.Characters.Count > 1000) Then Paragraph.Range.Delete
    Next
     


    Цитата:
     
    Цитата: По поводу Word.Application - Вы использовали .InsertAfter вместо .TypeText, верно?  
     немного не так. может быть коряво, но  
     .Paragraphs.Add.Range.Text=XMLHTTP.responseText  
     какой вариант вернее?

    Не знаю. Я слишком мало пользуюсь Word VBA, чтобы ответить на этот вопрос... Надеюсь, что ответит кто-нибудь из знатоков.

    Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 18:44 01-02-2014
    msmih



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

    Цитата:
    Я слишком мало пользуюсь Word VBA

    эту функцию прописал в vbs. пока работает.
    Вам огромное спасибо за подсказки!

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 19:13 01-02-2014
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Еще раз Need Help. Буду признателен за следующую подсказку на VBA.
    Есть текст формата

    Код:
     
    Какой-то текст - Еще раз какой-то текст. Третий текст - продолжение.
     

    Необходимо найти по следующему условию: проблем тире пробел заглавная буква.
    Заменить только: пробел тире на точку.
     
    С помощью спецсимволов [А-Я]{1;1} искомое значение нахожу, но замена происходит вместе с первой заглавной буквой. Поэтому нужна помощь, никак не соображу.

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 12:34 02-02-2014
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время, msmih
    Попробуйте искать выражение
    " - ([A-ZА-Я])"
    И заменять на  
    " . \1"

    Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 13:47 02-02-2014
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток, Alex_Piggy
    не совсем помогает. ". \1" Ставит: точку пробел Заглавная буква пробел оставшееся слово.
    То есть отделяет первую букву.
    Пока в мыслях загвоздка

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 14:00 02-02-2014
    Открыть новую тему     Написать ответ в эту тему

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