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

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

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

    Всего записей: 1 | Зарегистр. 01-04-2012 | Отправлено: 22:48 01-04-2012 | Исправлено: Marlenx, 22:49 01-04-2012
    Alexey87

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста как должен выглядеть код макроса, который сможет реализовать выбор значений из полей со списком (элементы ActiveX), находящихся в таблице (таблицу задействовал как автотекст)
    или как по другому реализовать выбор данных через автотекст?
     
    при вставке автотекста в полях со списком ничего не выбирается (2 поля, Word 2003)

    Всего записей: 659 | Зарегистр. 27-01-2008 | Отправлено: 20:08 07-05-2012
    life_so_good



    Оптимист
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли как-то обработать пример, средствами VB с целью превращения его в документ excel ?  
     
    Пример сокращен до нескольких строк, в реалии их может быть несколько сотен или более...  
     
    Сам пример

    Всего записей: 1335 | Зарегистр. 30-04-2002 | Отправлено: 16:28 11-05-2012
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    life_so_good
    Интересно, откуда такой изврат получается?
    Может легче просто преобразовать (распечатать) в картинку и распознать finereader`ом?

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 01:40 12-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gena1971  
    Изврат  
    +1
     
    life_so_good
    Покажи оригинальный материал (кусок), а не модель.  
    А если это и есть оригинал, то лечить надо на стадии зачатия - выбрать нужный подоконник в подъезде. Щаз уже поздняк. И неинтересно, увы... Через OCR (Gena1971 +1) и то веселее.

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 01:57 12-05-2012
    life_so_good



    Оптимист
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    grbdv
    Gena1971
    парни, это и есть оригинал, sap рожает через скан то это понятно... думал мб есть иной путь

    Всего записей: 1335 | Зарегистр. 30-04-2002 | Отправлено: 09:07 12-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    life_so_good
    Грустно. Попробуй пошукай в контексте "парсер для rtf", "структура rtf". Может дешевле и эффективнее rtf, как текстовый файл распарсить? В этой теме про VB может спросить... Веб-программеры должны, по идее, часто с подобными задачами сталкиваться.
     
    Добавлено:
    life_so_good
    Вот, взгляни
    Это экселевский файл. Надо его положить в одну папочку вместе с primer.rtf
    В редакторе VBA надо подключить библиотеку Word:
    Alt+F11, Tools - Refernces - в списке найти 'Microsoft Word 11.0 Object Library' и поставить галку.
    Зайти в Module1, встать внутрь процедуры sb_rtf2xls и нажать F5.
     
    Я объектную модель Word почти не знаю, поэтому не справился с явным выделением текста из рамки. Сделал тупо в лоб - копи-пасте. Из-за этого получаются накладки в ячейках, где присутствуют табуляции. Вобщем, надо, чтобы кто-то, хорошо знающий Ворд подключился.
     

    Код:
    Sub sb_rtf2xls()
    Dim wrd As Object, frm As Frame, dcm As Document, rng As Range
    Dim lCol&, lCC&, lRR&
    Dim sPathName$
         
        Cells.Clear                 ' clear sheet content
         
        sPathName = ThisWorkbook.Path & "\" & "primer.rtf"
        lCol = 8                    ' set columns qty
         
        Set wrd = CreateObject("Word.Application")
        wrd.Visible = True
        Set dcm = wrd.Documents.Open(sPathName)
         
        lRR = 0: lCC = 1
        For Each frm In dcm.Frames
            If lCC = 1 Then
                lRR = lRR + 1
                lCC = lCol + 1
            End If
            lCC = lCC - 1
            frm.Copy
            Cells(lRR, lCC).PasteSpecial (xlPasteValues)
        Next
        Set wrd = Nothing
    End Sub

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 13:54 12-05-2012 | Исправлено: grbdv, 15:19 12-05-2012
    GreatWorm



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как -    
    1. Заменить все строки начинающиеся с определенного слова? Нужно очистить текст с форума от мусора.  
    То есть -  
    Vasya66 -  October 17, 2011, 09:26:09 pm  
    blabla blablablablablablablablablablablabla  
     
    JoX -  October 17, 2011, 09:29:07 pm  
    blablablablablablablablablablablablablabla  
     
    На -  
     
    Vasya66  
    blabla blablablablablablablablablablablabla  
     
    JoX  
    blablablablablablablablablablablablablabla  

    Всего записей: 120 | Зарегистр. 14-01-2007 | Отправлено: 16:00 17-05-2012
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GreatWorm
    Подумал немного, можно заменой попробовать (надо включить подстановочные знаки)
    Сначала в поле найти вставить строку (без кавычек)
    "^0032-^0032^0032[ADFJMNOS][a-z]@[ehlry]^0032[0-9]{2},^0032[0-9]{4},^0032[0-9]{2}:"
    в поле заменить
    "000дата000" - (к примеру)
    И произвести полную замену
    Потом вторым заходом в поле найти (без кавычек)
    "000дата000[0-9]{2}:[0-9]{2}^0032[ap]m"
    заменить - очистить.
    И снова полная замена.
    За раз не получилось, слишком длинное выражение получается.
    Это точно для приведенного примера, пробелы имеют значение.
    Вроде как то так.
    ------
    Подправил немного

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 17:37 17-05-2012 | Исправлено: Gena1971, 17:41 17-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GreatWorm
    Исходник ведь текстовый файл? Подгрузить библиотеку VBScript и читать исходный файл построчно. Искать первое вхождение "-" с начала строки, проверять его на обрамление одним пробелом слева и двумя справа. Если в никах тоже могут быть дефисы, то в с таком случае искать следующее вхождение. Считать от начала строки до позиции дефиса - 2. Записать в целевой файл. Экспортировать его в ворд. Можно и сразу в ворд писать.

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 18:02 17-05-2012
    grbdv

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GreatWorm
    Бзв, в смежной теме по Екселю есть отчаянные поклонники регэкспа, они, думаю, смогут и в одно движение руки смогут записать... Или даже в полдвижения :)

    Всего записей: 1163 | Зарегистр. 20-08-2011 | Отправлено: 20:17 17-05-2012
    Alexey87

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

    Всего записей: 659 | Зарегистр. 27-01-2008 | Отправлено: 23:02 18-05-2012
    manhattan 22

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

    Всего записей: 21 | Зарегистр. 23-05-2012 | Отправлено: 14:02 23-05-2012
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    manhattan 22
    А эти файлы точно вордовские? Ворд только с текстом оперирует. И если в нем стоят запятые, то они там должны остаться и при смене региональных настроек. Может все таки exel?

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 15:13 23-05-2012
    manhattan 22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    да, файлы точно ворд.
    в таблицах стоит табуляция "по разделителю", что обеспечивает выравнивание положительных и отрицательных значений (они в скобках) с висячей последней скобкой.
    если открыть англ файл с русскими настройками - разделитель групп разрядов "," ворд примет за разделитель целой и дробной части, получится что-то вроде:
    12,345
    678
     
    а должно быть:
    12,345
        678

    Всего записей: 21 | Зарегистр. 23-05-2012 | Отправлено: 16:05 23-05-2012
    Gena1971



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    manhattan 22
    Никогда не пользовался этой фичей. Но не думаю, что из документа ворда можно управлять глобальными настройками винды, кучей параметров в реестре. Может проще создать еще одного пользователя с английскими настройками и быстро переключаться между ними. По моему проще, чем настройки каждый раз править.

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 20:19 23-05-2012 | Исправлено: Gena1971, 20:21 23-05-2012
    msmih



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    народ, подскажите, есть макрос, написанный с использованием richtx32.ocx, попытка запустить на word 2010 x64 вылетила в трубу. куда сейчас смотреть? и что надо менять?

    Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 17:26 28-05-2012
    reenoip



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Отправили к вам, но, судя по активности вашей темы, ответа на мой вопрос мне как минимум до конца этого лета можно не ждать
     
     
     
     
    p.s.
    Мне можно и без конвертации, самое главное - чтобы формат при сохранении автоматически выставлялся как "Документ Word 97-2003", а не "Веб-страница".
     
     
    p.p.s.
    Вопрос закрыт.

    Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 15:20 09-07-2012 | Исправлено: reenoip, 16:23 09-07-2012
    YuryS2006



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго дня! Тема не активная, но вдруг кто откликнется...  
    Поставлена задача переделать некий бланк для клиентов из Excel в Word. Возникла необходимость запрограммировать поля (не в форме, а прямо в тексте!), в которые клиент может вписывать свои значения.
     
    Имеем  
    поле "Сумма, руб." - текстовое,  
    поле "НДС" - список со значениями "0%", "10%" и "18%"  
    и  
    поле "Сумма НДС, руб.", которое должно вычисляться, как Сумма*НДС/(100+НДС) и выводиться в третье поле цифра при выборе 10% и 18% или "не облагается", при выборе 0%.  
     
     
    В Excel'e это все легко и просто решалось, но как сделать в word'e? Буду очень признателен, если кто-нибудь напишет скриптик на VBA

    Всего записей: 135 | Зарегистр. 13-03-2006 | Отправлено: 14:42 24-07-2012
    YuryS2006



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

    Всего записей: 135 | Зарегистр. 13-03-2006 | Отправлено: 18:49 28-07-2012
    Открыть новую тему     Написать ответ в эту тему

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