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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    angel1980
    Вставь в таблице строку сверху, а потом преобразуй в текст.
    Или вырежь всю таблицу, вставь абзац а после него верни таблицу. Возможно надо будет вырезать таблицу и плюс хоть один абзац после неё в этом случае. Я просто не помню как вырезание произойдёт если вся таблица выделена.
    ----------
    Только как это относится к VBA?

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 18:32 05-12-2016 | Исправлено: Gena1971, 18:33 05-12-2016
    angel1980

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gena1971
    Спасибо за ответ! Что-то подобное я и собирался сделать, когда совсем отчаялся найти "правильный" способ. Но решил, что, возможно, это у меня какое-то затмение, и быть такого не может чтобы для простой операции "вставить элемент" требовались костыли в виде добавления строк, их преобразования и т. п.
    На самом деле задача в том, чтобы найти в документе все сноски, находящиеся в таблицах, и вынести их над или под таблицу, оставив на старом месте номера текстом в верхнем регистре. И все шло хорошо, пока не наткнулся на невозможность вставить что-либо возле таблицы простой командой (это касательно вопроса, как это относится к VBA).

    Всего записей: 5 | Зарегистр. 15-06-2007 | Отправлено: 19:15 05-12-2016
    aequit

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    angel1980
    Sub tabltx()
    ActiveDocument.Tables(1).Select
    Selection.Collapse Direction:=wdCollapseEnd
    Selection.TypeText "И все шло хорошо, пока не наткнулся на " _
    & "невозможность вставить что-либо возле таблицы простой командой." & Chr(13)
    End Sub

    Всего записей: 192 | Зарегистр. 17-11-2005 | Отправлено: 19:39 15-01-2017
    aljabr

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    В MS WORD пытаюсь смастерить следующее.
    Нужно просто выделить (мышкой) словосочетание и нажать клав. сокращение, чтобы...
    Выделить словосочетание серым фоном + к словосочетанию добавляется примечание.

    Код:
     
    Sub Gray()
    '
    ' Gray  
    '
    '
    Options.DefaultHighlightColorIndex = wdGray25
    Selection.Range.HighlightColorIndex = wdGray25
    Selection.Collapse Direction:=wdCollapseEnd
    ActiveDocument.Comments.Add _
    Range:=Selection.Range, Text:="review this"
    End Sub
     

    Проблема в том что примечание добавляется только на последнее слово, а не на все выделенное (мышкой) словосочетание.
     
    PS
    В идеале было бы отлично если бы вместо review this можно мыло вставить имеющийся текст из буфера обмена.

    Всего записей: 616 | Зарегистр. 19-09-2009 | Отправлено: 10:50 22-07-2017 | Исправлено: aljabr, 13:21 22-07-2017
    svs123456789

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

    Всего записей: 2941 | Зарегистр. 10-04-2003 | Отправлено: 17:58 23-12-2017
    DenSyo

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

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

     

    Код:
    For Each t In ActiveDocument.Tables
        t.Rows.First.HeadingFormat = wdToggle
        t.AutoFitBehavior wdAutoFitContent
    Next

    Всего записей: 219 | Зарегистр. 19-01-2008 | Отправлено: 09:16 25-12-2017
    DenSyo

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

    Код:
    Function viewBookmarks(theDoc As Document) As String
        Dim s As String
        Dim iBook As Object
        s = ""
        For Each iBook In theDoc.Bookmarks
            s = s & iBook.Name & "|"
        Next
        If s = "" Then viewBookmarks = "" Else viewBookmarks = Left(s, Len(s) - 1)
    End Function
     
    Sub testBookmarks()
        MsgBox viewBookmarks(ThisDocument)
        MsgBox viewBookmarks(Documents("Документ1"))
    End Sub

    Всего записей: 219 | Зарегистр. 19-01-2008 | Отправлено: 05:00 05-02-2018
    Vsevolod



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

    Цитата:
    а что там в вордовском файле насовано? При открытии он пытается какие-то SQL-запросы выполнить...

     
    Обычное слияние из Книга1.
     

    Цитата:
     взять многостраничный файл и сохранить каждую его страницу в отдельный документ.  

    У меня всего 1 страница. Вот открой Письмо и в Рассылках - просмотр результатов можно просмотреть чего получилось. Но он выдаёт по 1 странице. А чтобы все получить, то надо
    Цитата:
    "Рассылки - Найти и объединить - изменить отдельные документы"
    и выбрать все
     
    Добавлено:
    И макрос можно применить, чтобы был правильный результат, только после "выбрать все"

    Всего записей: 2366 | Зарегистр. 13-06-2001 | Отправлено: 14:46 30-06-2018
    ALeXkRU



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    в продолжение разговора... начало там
     
    Vsevolod
    Цитата:
    У меня всего 1 страница

    ну так... и это - нормально   откуда ж оно всё возьмётся никто и не обещал ничего такого.. надо ж сочинять макрос по-серьёзному.
    Я то предложил простой вариант (чтобы ничего не нужно было программить)
     
     
     
    Добавлено:
    Vsevolod
     
    посидел-поковырялся...
    Что получилось:  - ссылка
     
    - открыть файл-шаблон  
    (изменил шаблончик: в слияние включаются только те записи из excel-таблицы, у которых есть поведение-прилежание;
    причём пустые фразы без данных не выводятся в результат)
    - выполнить макрос RecAndSplit (можно на него назначить кнопку)
    (описание есть в тексте макроса... ) который  
        - выполняет слияние с таблицей; сохраняет в общий файл рассылки  
        - результирующий файл рассылки делит на отдельные файлы
        - имена файлов - по имени адресата (все файлы в той же папке, из которой открыт файл-шаблон)
        - общий файл рассылки можно удалить
     
    Добавлено:
      оказывается, есть готовые решения  - даже с кнопкой

    Всего записей: 11877 | Зарегистр. 03-12-2003 | Отправлено: 19:46 30-06-2018 | Исправлено: ALeXkRU, 20:11 30-06-2018
    crotoff

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

    Всего записей: 961 | Зарегистр. 17-04-2007 | Отправлено: 21:57 15-02-2019 | Исправлено: crotoff, 12:05 16-02-2019
    AlexeyID

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Подскажите пожалуйста как проще найти поля в которых содержится переменная docvariable
    и как выделить абзац содержащий поле?  
     
    Все что я состряпал это:
        For Each dV In ActiveDocument.Variables
            For Each Field In ActiveDocument.Fields
                If InStr(Field.Code, dV.Name) > 0 Then
                    Field.Select
                    Selection.Expand (wdParagraph)
                End If
            Next
        Next
     

    Всего записей: 73 | Зарегистр. 01-10-2005 | Отправлено: 06:38 05-03-2019 | Исправлено: AlexeyID, 07:12 05-03-2019
    Gebsar



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Форум по VBA, Excel и Word Макросы в Word -тематический форум, готовые решения - ссылка на один форум, поддерживающийся одним чуваком? Серьезно?  
     
    Вот гораздо более правильные форумы:  
     
    www.cyberforum.ru/vba/
    www.programmersforum.ru
    www.planetaexcel.ru  - инфы для vba в разы больше!

    Всего записей: 66 | Зарегистр. 19-06-2013 | Отправлено: 18:45 06-03-2019
    JekG

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

    Цитата:
    Sub CenterResizeImages()
        Dim pic, w, h
        Dim inshape As InlineShape, shape As shape
     
        Application.ScreenUpdating = False
    '1 Ровняем все изображения по центру страницы
       
        ' Установка рисунков, вставленных в абзацы по центру.
        For Each inshape In ActiveDocument.InlineShapes
            With inshape.Range.ParagraphFormat
                .Alignment = wdAlignParagraphCenter
                .LeftIndent = CentimetersToPoints(0)
                .RightIndent = CentimetersToPoints(0)
                .FirstLineIndent = CentimetersToPoints(0)
            End With
        Next inshape
       
        'Установка висячких рисунков по центру.
        For Each shape In ActiveDocument.Shapes
            shape.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
            shape.Left = wdShapeCenter
        Next shape
     
    'с "плавающими" рисунками, включая фигуры, можно работать со всеми сразу:
     
    ' 2 Изменяем размер  
    With ActiveDocument.Range.ShapeRange
        .ScaleHeight 0.67, msoFalse
        .ScaleWidth 0.67, msoFalse
    End With
     
    'рисунки в тексте приходится обрабатывать по одному:
     
    For Each pic In ActiveDocument.InlineShapes
        With pic
            w = .Width
            h = .Height
            .Width = w * 0.67
            .Height = h * 0.67
        End With
    Next
     
    End If
     
    Application.ScreenUpdating = True
     
    MsgBox "Готово.", vbInformation
     
    End Sub

     
    чтобы размеры картинок он менял только если рисунок альбомный (высота меньше ширины)

    Всего записей: 2728 | Зарегистр. 12-10-2005 | Отправлено: 13:38 12-07-2020
    gett



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

    Прошу помоши.
     
    У меня Word файл который посал когда учился в Москве. Давно. Проблема в том что он написан шрифтом которий я сам делал, не обрашая внимание на рускую раскладку. Сейчас, мне нужно сделат Word macro с которым можно заменить букви в документе с русской кодировкой в Windows 10, чтоби мог использоват стандардние шрифти. С учетом маленких и больших букв.
     
    Примерно так
     
    Заменить ј RFuturis (так у меня називается самоделний шрифт) с й Arial с учетом маленкая буква
     
    Итп для всех букв.
     
    Можно попросит образец скрипта, а я потом уже сам допишу все букви
     
    Надеюсь понятно написал.
     
    Очевидно, я не русскоязични (Македония) так что прошу не бейте за орфографию.
     
    Спасибо!
     
    П.С. Конечно, можно сделат и с Search and Replace в Word, но мне кажется с макро точнее и бистрее
     
    П.П.С.
     
    Вот чего добился
     

     
    Все. Сделал.
     

    Код:
     
     
    Sub proba()
    '
    ' proba Macro
    '
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "j"
            .Replacement.Text = "é"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = True
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub
     

    Всего записей: 163 | Зарегистр. 08-10-2006 | Отправлено: 18:45 04-03-2021 | Исправлено: gett, 19:02 04-03-2021
    DJMC



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть код который в PQ сравнивает по символьное значения в строчках, сейчас идет между трех строчек, прошу подсказать как добавлять в данный код правильно данные, чтобы значение шло между 4,5 и так далее строчками?  

    Код:
    = Table.AddColumn(needed, "Количество совпадений", (rec) =>
            List.Count(
                List.Select(
                    List.Transform(
                        List.Zip({Text.ToList(rec[#"Данные.1"]), Text.ToList(rec[#"Данные.2"]), Text.ToList(rec[#"Данные.3"])}),
                        each List.Count(List.Distinct(_))
                    ),
                    each _ = 1
                )
            )
        )


    Всего записей: 12304 | Зарегистр. 26-09-2005 | Отправлено: 09:42 27-09-2021
    Открыть новую тему     Написать ответ в эту тему

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