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

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



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

    Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 14:01 09-10-2008
    baston



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

    Цитата:
    Подскажите плиз как сделать так чтобы на панельке была кнопка для запуска файла .EXE то есть просто расположить на панели ворда кнопку для запуска какого либо процесса?

     
    Вот пример макроса для запуска блокнота:

    Код:
    Sub Notepad()  
    Shell "c:\windows\notepad.exe", 1  
    End Sub  

    Чтобы поместить кнопку этого макроса на панель, откройте окно Настройка - перейдите на вкладку Команды - выберите команду Макросы - а в соседней панели найдите и выберите этот макрос и переместите его на панель.

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 19:49 09-10-2008
    MIHMIH007



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите плиз есть шаблоны для ворда так вот некоторые при добавлении некоторых шаблонов появляется вкладка НАДСТРОЙКИ и кнопки для них.... каким образом были сделаны данные кнопки?
    Спасибо

    Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 23:50 09-10-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MIHMIH007, автоматически (если вы имеете в виду Word 2007). А вообще по данной теме есть замечательный сайт и заметка Грега Макси: http://gregmaxey.mvps.org/Customize_Ribbon.htm

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 17:59 10-10-2008
    MIHMIH007



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    baston
    Спасибо большое за помощь вроде разобрался))) Скажите плиз вот я например создал кнопку в Word 2007 она поместилась в раздел НАДСТРОЙКИ как я могу изменить размер её побольше ? есть ли какая то команда в макросе?

    Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 12:31 11-10-2008
    MIHMIH007



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Скажите плиз как создать макрос из готового элемента??
    например есть рамка и я хочу чтобы она вставлялась постоянно но рамка уже готовая... как сделать макрос на постоянную её вставку?
    спасибо

    Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 23:59 11-10-2008
    baston



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

    Цитата:
    плиз вот я например создал кнопку в Word 2007 она поместилась в раздел НАДСТРОЙКИ как я могу изменить размер её побольше ? есть ли какая то команда в макросе?

    Нет, это в макросе не изменить. Это внутренности Word. Но можно как-то изменить через программирование XML, по-моему Грэг Макси и об этом где-то писал. Поищите.
     
    Что за рамка? И что за слово "плиз"?

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 22:30 12-10-2008 | Исправлено: baston, 22:31 12-10-2008
    MIHMIH007



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Скажите пожалуйста)))
    Есть например макрос который вставляет рамки по ГОСТ я хочу оттуда выдрать рамку... и сделать свой макрос на эту рамку но как сделать так чтобы ворд запомнил что эту рамку нужно вставлять с шаблона?

    Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 16:15 13-10-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вам нужно скопировать эту рамку и сохранить ее как элемент автотекста (Alt+F3). А затем уже при создании документа вы просто вставляете этот сохраненный элемент автотекста.

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 17:05 13-10-2008
    mihasska

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, плиз.
    В документе WORD несколько таблиц. Как определить в какой из них находиться курсор.

    Всего записей: 1 | Зарегистр. 19-10-2008 | Отправлено: 15:52 19-10-2008
    baston



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

    Код:
    Sub numCurTable()
    'номер текущей таблицы
    MsgBox ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
    End Sub

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 15:26 21-10-2008
    ixet

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые, никто обработкой прайсов не занимается? Когда регулярно требуется быстро перемножить/разделить какой-нибудь столбец на курс доллара или скидку. Разумеется, всё это легко решается в Excel, но при больших объемах однотипной работы удобнее был бы макрос для Word, работающий следующим образом:
    1)выделить нужные ячейки, запустить макрос
    2)в окне макроса чекером выбрать метод (умножение, деление) и множитель/делитель, или просто ввести выражение вида «х 26,4»
    3)также в окне макроса задать точность – число знаков после запятой или, наоборот, округление до единиц-десятков-сотен
    4)после Ok цифры в ячейках пересчитываются.
    Сам пробовал такой макрос замутить, да в VBA пока едва-едва…

    Всего записей: 67 | Зарегистр. 17-10-2008 | Отправлено: 23:03 07-11-2008
    ItsJustMe

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня возникла трабла, бьюсь уже две недели.
    Демонстрация (Word 2007):
    Пробуем исполнить этот код

    Код:
    Sub NewCanvasShape()
        Dim shpCanvas As Shape
        Dim shpCanvasShape As Shape
     
        'Add a new drawing canvas to the active document
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas( _
            Left:=100, Top:=75, Width:=250, Height:=200)
     
        'Add a circle to the drawing canvas
        Set shpCanvasShape = shpCanvas.CanvasItems.AddShape( _
            Type:=msoShapeOval, Left:=25, Top:=25, _
            Width:=150, Height:=150)
        MsgBox "Left=" & shpCanvasShape.Left & vbNewLine & "Top=" & shpCanvasShape.Top
    End Sub

    Код взят отсюда и немного модифицирован, чтобы он мог показать траблу.
    Чтобы не загружать ваши мозги сверх необходимого, скажу, что свойства Left и Top у созданного oval'а возвращают совершенно не те значения, которые от них ожидаешь.
    Отсюда вопрос: Как заставить эти свойства работать правильно? Т.е. как вообще получить положение shape'а относительно канвы?

    Всего записей: 2025 | Зарегистр. 02-09-2005 | Отправлено: 07:10 24-11-2008
    bdfy

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть документ. в нем множество связанных с Excel, mathcad, просто  внешними рисунками блоков. создавались они через Правка-специальная вставка-связать.  
    Нужно обновить только связанные рисунки (emf формата), не трогая остальные блоки.  как это сделать ? другими словами как выделить в документе все рисунки ?

    Всего записей: 977 | Зарегистр. 21-04-2004 | Отправлено: 02:59 28-11-2008
    zolivan

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста.
    Создал такой код, смысл его - переводит буквы из ВЕРХНЕГО РЕГИСТРА в нижний, за исключением первого слова и слов после точек, где в нижний регистр не должны переводиться первые символы:
     
    Sub Shift()
    Dim sText As String, sLText As String, sPrText As String, sNewText As String
    Dim contSent As Integer, i As Integer, countWords As Integer
     
    ' Форматирование первого слова
    i = 1
    countWords = ActiveDocument.Words.Count 'количество слов
    sText = ActiveDocument.Words(i) ' возвращаем первое слово
    ' Если первое слово, то заглавная буква
    sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1)))
    sPrText = sText 'принимаем значение предыдущего слова, для следующего прогона
    sNewText = sLText 'Накапливаем форматированный текст
     
    ' Форматирование первого слова
    ' Цилк, который переводит слова в нижний регистр, кроме тех, что после точки
    For i = 2 To countWords
     sText = ActiveDocument.Words(i) ' возвращаем очередное слово
     ' Если предыдущая точка, то заглавная буква
     If sPrText = (Chr(46) & Chr(32)) Or sPrText = (Chr(46) & Chr(13) & Chr(10)) Then
      sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1)))
     Else
      sLText = LCase(sText)
      End If
     sPrText = sText 'принимаем значение предыдущего слова, для следующего прогона
     sNewText = sNewText & sLText 'Накапливаем форматированный текст
    Next
     
    ' Выделение и замена текста на отформатированный
    ActiveDocument.Range.Select
    Selection.text = sNewText
    End Sub
     
    Проблема в том, что условие:
     ' Если предыдущая точка, то заглавная буква
     If sPrText = (Chr(46) & Chr(32)) Or sPrText = (Chr(46) & Chr(13) & Chr(10)) Then
      sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1)))
     Else
    не отрабатываеться на новом абзаце, т.е. там где новый абзац тоже слово с маленькой буквы, а должно предложение начинаться с большой.
     
    Вот так.
     
    Может sPrText = (Chr(46) & Chr(13) & Chr(10)) - это запись не верна, как правильно?
    Заранее спасибо!

    Всего записей: 46 | Зарегистр. 24-10-2006 | Отправлено: 13:23 02-12-2008 | Исправлено: zolivan, 13:26 02-12-2008
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zolivan
    Может я чего-то не понял, но по описанию
    Цитата:
    Создал такой код, смысл его - переводит буквы из ВЕРХНЕГО РЕГИСТРА в нижний, за исключением первого слова и слов после точек, где в нижний регистр не должны переводиться первые символы
    очень похоже на простое изменение case
    Код:
        Selection.WholeStory
        Selection.Range.Case = wdTitleSentence

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:12 02-12-2008 | Исправлено: dneprcomp, 20:25 02-12-2008
    zolivan

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

    Всего записей: 46 | Зарегистр. 24-10-2006 | Отправлено: 20:11 03-12-2008
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zolivan
    Спроси в Компьютерные (IT) книги на РУССКОМ языке  или Компьютерные (IT) книги на АНГЛИЙСКОМ
    А вообще-то основное - help. И, как по мне, то лучше на английском. Если уж совсем не понимаешь, то записываешь макрос и смотришь, как они этo сделали.

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:31 03-12-2008 | Исправлено: dneprcomp, 23:31 03-12-2008
    CergeyNikol

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возникла у меня такая проблема
    есть куча вордовских файлов  
     в некоторых из них есть одинаковые абзацы
    Существует ли макрос позволяющий объеденить файлы в один удалив ( или выделив)
    повторяющиеся абзацы
    Буду благодарен за  помощь

    Всего записей: 62 | Зарегистр. 01-09-2007 | Отправлено: 02:28 04-12-2008
    Buuo

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые знатоки!  
    Я хочу создать словарь Лингво. Скачал архив с макросом Назара Кравцива, который должен выдавать текст с DSL-тегами, но он не работает. Чего-то ему не хватает, а чего понять не могу. Сейчас пытаюсь создать свой простейший макрос, который будет "дописывать" теги для слов, выделенных жирным. Ниже привожу фрагмент кода, который я написал, но программа выдаёт ошибку, когда я пытаюсь её запустить. Говорит, что  для .Remplacement не определён метод. Не понимаю почему.  
    Может, поможет кто разобраться? Заранее спасибо.
     
    Sub Проба_жирный_текст ()
    Selection.WholeStory
    With ActiveDocument.Range
            If Selection.Range.Bold = True Then
                    .Text = ""
                    .Remplacement.Text = "^&"
                    .Execute Format:=True, Replace:=wdReplaceAll
                Else
                    MsgBox "Не нахожу текста, выделенного жирным"
         End If
    End With
     
     
    Добавлено:
    Почему-то изменяет при отправке эту строку: .Remplacement.Text = "^&". Там в квадратных скобках идёт сначала "b", потом "^&"a в конце также в квадратных скобках "/b".

    Всего записей: 17 | Зарегистр. 13-10-2008 | Отправлено: 00:04 05-12-2008 | Исправлено: Buuo, 00:08 05-12-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