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

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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно в  с помощью макроса в Word 2007 создать гистограмму и задать для нее даные. Каким образом получить доступ к открывшейся таблице Excel? Заранее спасибо.

    Всего записей: 1 | Зарегистр. 08-12-2008 | Отправлено: 01:11 08-12-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Buuo, так наверное надо в поиске это делать, а не просто в диапазоне. Попробуйте изменить оператор на  With ActiveDocument.Range.Find

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 12:34 08-12-2008 | Исправлено: baston, 12:35 08-12-2008
    pharmakis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!  
     
    Господа эксперты, не подскажите как удалить из документа определенный тип таблиц, но с разными значениями внутри? Например таблицы: 2 строки и 6 столбцов,  внутреннее содержание разное. При этом конечно надо все другие не трогать
     
    ЗЫ: с предsдущей проблемой (копирование по закладкам) разобралась радикально: сделала на делфи..

    Всего записей: 8 | Зарегистр. 22-09-2008 | Отправлено: 05:42 11-12-2008
    Ice_Cherry

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!! Помогите пожалуйста решить задачу: надо написать программу, которая будет выделять/снимать в тексте все буквы "а" красным цветом.

    Всего записей: 2 | Зарегистр. 12-12-2008 | Отправлено: 21:21 12-12-2008
    MIHMIH007



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ice_Cherry
    Используй AkelPad с плагином на выделение ))

    Всего записей: 743 | Зарегистр. 05-12-2006 | Отправлено: 12:29 19-12-2008
    polk90



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ice_Cherry
    это обычной вордовской автозаменой делается. Ctrl+H, в найти ставишь букву а, в заменить на ставишь букву а, потом нажми Больше и внизу Формат->Шрифт->Цвет текста

    Всего записей: 4656 | Зарегистр. 19-12-2002 | Отправлено: 13:18 19-12-2008
    PLAG



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ice_Cherry
    Запиши макрос по тому принципу, который посоветовал polk90. Там сразу
    тебе прогу сделает)

    Всего записей: 33 | Зарегистр. 01-10-2006 | Отправлено: 13:32 19-12-2008
    Ice_Cherry

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

    Всего записей: 2 | Зарегистр. 12-12-2008 | Отправлено: 21:23 20-12-2008
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть такая задача. Надо поменять формат таблиц  в документе. Составил программку простейшую. Таблиц очень много и ручную это делать довольно долго. Тем более эту работу приходится делать периодически постоянно.

    Цитата:
     
    ActiveDocument.Styles("Сетка таблицы").Table.Alignment = wdAlignRowCenter  
    For Each baran In ActiveDocument.Tables    
       baran.Style = ActiveDocument.Styles("Сетка таблицы")  
       baran.PreferredWidthType = wdPreferredWidthPercent  
       baran.PreferredWidth = 100  
       baran.Rows.AllowBreakAcrossPages = False  
       baran.Rows.Height = MillimetersToPoints(0)  
       baran.Rows.HeightRule = wdRowHeightAuto
    Next baran
     

    Все очень просто, если бы все работало правильно.
    Но после выполнения макроса все внутренние объединения ячеек в таблицах разрываются. Т.е. количество работы увеличивается в разы. Происходит начиная с 4-й строки. Но самое интересное, это то, что таблицы все эти получены из finereader. И в тех таблицах, где объединения ячеек сделаны в самом ворде такого не происходит.
    Параметры таблиц вроде одинаковые на вид. Я отлисие не смог найти.
    Отсюда вопрос - где тут собака порылась, и как это поправить.
    Вариантов перепробовал кучу. Но первое выполнение 4-й строки на таблице из finereader приводит к разбиванию связанных ячеек.

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 13:53 25-12-2008 | Исправлено: Gena1971, 14:04 25-12-2008
    Troitsky



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

    Цитата:
    как удалить из документа определенный тип таблиц, но с разными значениями внутри? Например таблицы: 2 строки и 6 столбцов


    Код:
        For Each tbl In ActiveDocument.Tables
            If tbl.Columns.Count = 6 And tbl.Rows.Count = 2 Then
                tbl.Delete
            End If
        Next

     
    Gena1971
    Ячейки объединены по горизонтали или по вертикали?
    Пример проблемного файла можно выложить?


    ----------
    Мы в хорошем настроении гуляем по лесам.
    Кто обидеть нас захочет – сам получит по усам.
    Сам полу- получит по усам. Сам полу- получит по усам!

    Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 20:07 27-12-2008
    V4mp



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

    Всего записей: 65 | Зарегистр. 04-12-2008 | Отправлено: 18:28 28-12-2008 | Исправлено: V4mp, 18:29 28-12-2008
    V4mp



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

    Всего записей: 65 | Зарегистр. 04-12-2008 | Отправлено: 04:23 04-01-2009
    pharmakis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Чето у мну имена ни копирятсо.. или ручки кривые))
     
    2V4mp:
    чувак все пьют и спят;)
     
     
    2Troitsky:
    спасибо баааальшое, обязательна попробую

    Всего записей: 8 | Зарегистр. 22-09-2008 | Отправлено: 15:16 04-01-2009
    Vadim39



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

    Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 03:30 27-01-2009 | Исправлено: Vadim39, 03:34 27-01-2009
    anatolus

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

    Цитата:
    DachnikGarik
    В вашем случае самый простой(и красивый) способ - слияние!  

    А поподробней можно с примером , пожалуйста.

    Всего записей: 126 | Зарегистр. 01-10-2005 | Отправлено: 21:28 31-01-2009
    Munchkin



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте.
    Относительно долго мучаюсь с простой проблемкой. Постановка задачи весьма проста, но не получается сделать и все тут.
    Имеем файл вордовский. В нем инфа. Суть такова: исчем строки определенные, выделяем их и копируем на новый лист документа или еще лучше в экселевскую таблицу.
    Так вот. Мой макрос строки находит, выделяет и вроде как копирует, но вот вставлять на новый лист никак не хочет.
    Буду весьма благодарен, если кто-то подскажет решение данной проблемы. Код макроса ниже:
     

    Код:
    Sub Макрос13()
     
    Dim i, n As Integer
     
    s = Windows.Application.ActiveDocument.Name
    Documents.Add DocumentType:=wdNewBlankDocument
    ss = Windows.Application.ActiveDocument.Name
    Windows(s).Activate
    i = 0
    n = 70
     
    For i = 0 To n Step 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.Execute
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        With Selection
            .Copy
        Windows(ss).Activate
            .Paste
            .TypeParagraph
        End With
        Windows(s).Activate
        Selection.MoveDown Unit:=wdLine, Count:=1
        Selection.Find.ClearFormatting
    Next
    End Sub

    Всего записей: 1 | Зарегистр. 09-02-2009 | Отправлено: 17:29 09-02-2009
    baston



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

    Код:
    Dim clp As String
    Dim MyData As DataObject
    Set MyData = New DataObject
     
    clp = Selection.Text
    MyData.SetText clp
    MyData.PutInClipboard
     
     


    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 16:38 16-02-2009
    kiraiira

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Помогите пожалуйта. Как мне в Worde выделить весь текст на текущей странице?????

    Всего записей: 2 | Зарегистр. 09-03-2009 | Отправлено: 16:44 09-03-2009
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Рекомендую использвать шаблон: Ссылка

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 09:55 10-03-2009
    kiraiira

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

    Всего записей: 2 | Зарегистр. 09-03-2009 | Отправлено: 19:52 10-03-2009
    Открыть новую тему     Написать ответ в эту тему

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