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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите, как после выполнения операции Замены получить статистику (количество замен)?

    Цитата:
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = " -([0-9])"
            .Replacement.Text = " " & ChrW(8722) & "\1"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll

    Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 17:38 06-12-2007 | Исправлено: popkov, 15:24 09-12-2007
    kirik1986

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

    Всего записей: 1 | Зарегистр. 09-10-2007 | Отправлено: 14:50 09-12-2007
    popkov

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

    Цитата:
    Добрый день, подскажите, пожалуйста, как сделать, макрос, чтобы в выделенной области он менял цвет всех заглавных букв текста на красный, а строчных на черный?

    Используй функцию "Замена" в Word. Включи опцию "Подстановочные знаки".
     
    В поле "Найти:" набери:
    Цитата:
    [А-ЯA-Z]

    Поле "Заменить на:" можешь оставить пустым, помести туда курсор, в меню Формат окна "Замена" выбери Шрифт, и там укажи Красный цвет текста.
     
    Далее можешь записать макрос. Вот что у меня получилось после доработки:
    Цитата:
    Sub Макрос()
    ' Макрос записан 09.12.2007 admin
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Font.Color = wdColorRed
        With Selection.Find
            .Text = "([А-ЯA-Z])"
            .Replacement.Text = "\1"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub
    Единственная трудность - этот макрос будет выполнять замену по всему документу, а не только в пределах данного выделения. Как изменить, не знаю. Для строчных букв всё аналогично.

    Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 15:32 09-12-2007 | Исправлено: popkov, 15:37 09-12-2007
    baston



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

    Цитата:
    Добрый день, подскажите, пожалуйста, как сделать, макрос, чтобы в выделенной области он менял цвет всех заглавных букв текста на красный, а строчных на черный?

    Попробуйте вот такой макрос:

    Код:
    Sub colorCase()
    'изменение цвета первых букв предложений в выделенном тексте
    Dim fChar As Range
    Dim selText As Range
    Set selText = Selection.Range
    If Selection.Type = wdSelectionIP Then
       MsgBox "Не выделен текст"
    Else
       For Each fChar In selText.Sentences
          fChar.Characters.First.Font.Color = wdColorRed
       Next fChar
    End If
    End Sub

     
    Добавлено:
    Вот более правильное решение, поскольку я невнимательно вначале понял вопрос. Это решение мне подсказали на форуме по VBA.

    Код:
    Sub colorCase()  
    Dim fChar As Range  
    Dim selText As Range  
    Set selText = Selection.Range  
    If Selection.Type = wdSelectionIP Then  
       MsgBox "Не выделен текст"  
    Else  
       For Each fChar In selText.Words  
          If fChar.Characters.First Like "[A-ЯA-Z]" Then  
            fChar.Characters.First.Font.Color = wdColorRed  
          End If  
       Next fChar  
    End If  
    End Sub

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 19:58 09-12-2007
    kolinich

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пожалуйста как зациклить (чтоб во всем документе или в пределах выделения) нашло м3 и исправило на м3 - 3 верхний индекс
    Sub Макрос1()
     
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = ""
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "м3"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
        Selection.TypeText Text:="м"
        Selection.Font.Superscript = wdToggle
        Selection.TypeText Text:="3"
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "м3"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
    End Sub
    получается примерно такого содержания но единично ищет каждый раз приходится жать на кнопку.

    Всего записей: 46 | Зарегистр. 05-06-2006 | Отправлено: 14:06 12-12-2007
    Chim701

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто знает - подскажите пожалуйста неопытному.. Мне нужно что бы файл отправлялся через электронную почту по нужному адресу взятому из адресной книге оутлук-экспресса. Единственное чего мне удалось добиться это появления окна "отправить" с пристегнутым нужным файлом:  
     
    ActiveDocument.SendMail
     
    но при этом приходится ручками выбирать нужный адрес и ручками жать кнопку отправить. А можно все это автоматизировать с помощью VBA? Кто знает - подскажите пожалуйста неопытному..

    Всего записей: 7 | Зарегистр. 20-12-2007 | Отправлено: 15:42 20-12-2007
    zoric

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как реализовать следующую функциональность?
     
    Набираем текст документа.  
    Понадобилось вставить название некого объекта. С помощью макроса вызываю список объектов (сохранённый предварительно в файле, а ещё лучше – в базе данных), выбираю необходимый.
    При закрытии документа (AutoClose) – в начале документа генерируется список упомянутых в тексте объектов, с дополнительными параметрами, взятыми из того же списка объектов (количество, вес, цвет  и т.п.)
    Или может подобные задачи надо не в Word-е делать?

    Всего записей: 159 | Зарегистр. 29-07-2005 | Отправлено: 17:12 20-12-2007
    AFT



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Docword.SaveAs
     
    как сделать, чтоб по кнопке открывалось диалоговое окно и запрашивало путь для сохранения и имя файла?

    Всего записей: 693 | Зарегистр. 15-10-2002 | Отправлено: 18:10 25-12-2007
    Anatolij2005

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

    Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 13:33 26-12-2007
    CHEMBERCHLEN

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

    КТО НИБУДЬ ЗНАЕТ КАК РЕШАЕТСЯ ЭТОТ ПРИМЕР НА VBA:
     
     
    Удалить все «*» и продублировать каждый символ, отличный от заданной цифры, если она  
    присутствует в исходной строке.
     
    ЗАРАНЕЕ СПАСИБО
     

    Всего записей: 1 | Зарегистр. 14-01-2008 | Отправлено: 02:50 14-01-2008
    Andrey32

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Частотного словаря ни у кого не имеется? Не хочется изобретать велосипед. Под Office 2003.

    Всего записей: 245 | Зарегистр. 12-12-2006 | Отправлено: 01:01 22-01-2008
    oselky

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    М.б. кто-то уже встречался с подобной задачей, подскажите, пожалуйста, как её можно автоматизировать и достаточно быстро.
    Есть 8 файлов, полученных после слияния. Каждый файл содержит по одной странице нового документа, всего в файлах по 200 страниц. Файл 1 содержит первые страницы нового документа, файл 2 содержит вторые и т.д. Требуется из каждого файла перенести по одной странице в новый файл, чтобы получить 200 файлов по 8 страниц в каждом.
    Заранее спасибо!
     
    Добавлено:
    Спасибо, вопрос снят.

    Всего записей: 9 | Зарегистр. 04-08-2006 | Отправлено: 11:20 24-01-2008
    agro

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

    Всего записей: 18 | Зарегистр. 12-02-2006 | Отправлено: 00:42 14-02-2008 | Исправлено: agro, 01:14 14-02-2008
    sadmn



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

    Цитата:
    Sub mistakes()
     
    Dim myBar As CommandBar
    Dim myControl As CommandBarButton
     
    ' Создание панели инструментов
    Set myBar = ActiveDocument.CommandBars.Add(Name:="MyNewBar", _
    Position:=msoBarTop, Temporary:=True)
    With myBar
    .Visible = True
    .RowIndex = msoBarRowLast
    End With
    ' Создание кнопки
    Set myControl = myBar.Controls.Add _
    (Type:=msoControlButton, Before:=1)
    With myControl
    .Caption = "Ошибки"
    .FaceId = 16
    .Style = msoButtonIconAndCaption
    End With
    End Sub
     
     
    Private Sub ???_???()
    Dim i As Integer
    Dim j As Integer
     
    Select Case KeyAscii
    Case 8, 46
    i = 0
    j = j + 1
    Case 32, 13
    i = i + 1
    End Select
     
    CommandBars("MyNewBar").FindControl(msoControlButton).Caption = CStr(i) + "; " + CStr(j)
    End Sub
     


    Всего записей: 1354 | Зарегистр. 04-06-2006 | Отправлено: 16:14 16-02-2008 | Исправлено: sadmn, 22:20 16-02-2008
    say100

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

    Всего записей: 43 | Зарегистр. 08-11-2006 | Отправлено: 09:41 11-03-2008
    vasiliy74



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ctrl+c ctrl+v не помогает, копирую данные из Word в Excel, в теле каждого такого файла есть две таблицы, вообще фалы типовые так как формируются автоматически, но в таблицах есть цифры и они написаны через точку, а после вставки в excel ещё и пробелы появляются после каждой цифры в ячейке так что просто изменение системной информации типа запятую на точку не помогает да и нужно свойство каждой из такой ячейки поставить цифра.
     
    Помогите с чего начать?? Как правило просто записываешь макрос потом смотришь в него и начинаешь но у меня так не получилось, неверно каким либо образом необходимо найти таблицу и начать по ней шагать.

    Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 16:57 11-03-2008
    Vixerunt



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    друзья! нужна помощь! подскажите, как в заданном тексте удалить часть текста, заключенного в скобки (вместе со скобками)? буду весьма признателен....

    Всего записей: 125 | Зарегистр. 22-12-2005 | Отправлено: 17:08 05-04-2008
    Henge

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как вычислить суммы элементов матрицы, расположенных в строках с четными и столбцах с нечетными номерами, и поместить их соотвественно в одномерные массивы по возрастанию.

    Всего записей: 1 | Зарегистр. 25-03-2008 | Отправлено: 17:18 05-04-2008
    Aer0ZiS

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В универе на программировании проходим Word VBA... Может кто-нибудь из местных гуру поможет с лабками, а? =) А то никак в сроки не укладываюсь - времени не хватает... =)) Буду очень признателен!
     
    Задание №1:
    Преобразовать матрицу путём поэлементного вычитания последнего столбца из всех столбцов кроме последнего и получить сумму всех элементов матрицы. Последний столбец перенести в одномерный массив и посортировать по возрастанию. Напечатать все массивы и сумму элементов с пояснениями.
     
    Задание №2:
    Задан массив записей о расписании учебных занятий на неделю. Информация о расписании включает в себя: шифр группы, дни недели, часы занятий, дисциплина, преподаватель, аудитория. Составить расписание на всю неделю. Информацию о расписании поместить в список в ComboBox. Напечатать исходный массив и расписание.
     
    Задание №3:
    Создать процедуру для вычисления корней квадратного уравнения. Коэффициенты уравнения заданы массивом и вводятся по запросу программы, а корни - простые переменные. Если будут мнимые корни, им присвоить значения нулей. Использовать процедуру для трёх уравнений. Коэффициенты и корни печатать в основной программе.
     
    P.S. Если в задании указано напечатать, то имеется в виду вывести через Debug.Print в окошко Immediate.

    Всего записей: 1 | Зарегистр. 16-04-2008 | Отправлено: 20:03 16-04-2008
    anetral

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

    Цитата:
    Но остается параметр Spacing, даже принудительное присваивание ему значения "0" не дает возможности от него полностью избавиться. Между линиями остаются небольшие зазоры. Приходится для каждой таблицы руками в Свойствах таблицы - Таблица - Параметры убирать галку с "Интервалы между ячейками". Подскажите как избавиться от этой гадости, как это сделать на VBA?

     
    Я тоже мучался с этой проблемой. Решил её так: установливаю толщину всех границ 0,25 пт. При печати зазоры не видны и толщина границ получается как 0,5 пт., т.е. точно в два раза.

    Всего записей: 1 | Зарегистр. 21-05-2008 | Отправлено: 15:07 21-05-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