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

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



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, подскажите как пакетно вставить "Водяные знаки" или Подложку на документы Word (*.doc, *.rtf),  которых порядка 70, а кажый документ имеет объем от 3 до 45 страниц... Я понимаю что с помощью макроса, понимаю, но не более

    ----------
    Мы на горе всем буржуям, мировой пожар раздуем... А.Блок.

    Всего записей: 5280 | Зарегистр. 16-04-2006 | Отправлено: 22:28 20-10-2010
    vaulin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня следующая проблема. В одном документе пометил закладками часть нумерованного списка, копирую его программно и вставляю в другой документ. При этом во 2-м документе нумерация списка уже начинается не с 1, а с другой цифры, т.к. в этом документе до этого где-то в начале имеется другой нумерованный список. Попробовал через Recoder посмотреть как изменить нумерацию, но всё как-то сложно и не универсально. Хотелось бы знать из-за чего нумерация меняется, и как это обойти. Спасибо.
     
    Добавлено:
    Всё, слава Богу! разобрался. Для того чтобы нумерация началась опять с "1", нужно следующее. Сначала встаю курсором на первый пункт, затем:

    Код:
        Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
            ListGalleries(wdOutlineNumberGallery).ListTemplates(1), _
            ContinuePreviousList:=False, ApplyTo:=wdListApplyToWholeList

    Правда, почему-то последний пункт списка перестает быть частью списка и ему присваивается стиль "Обычный", и приходится еще делать так: вставать курсором на этот пункт и далее

    Код:
     Selection.Style = "Нумерованный список 2"
     With Selection.ParagraphFormat
         .LeftIndent = CentimetersToPoints(2)
         .FirstLineIndent = CentimetersToPoints(0)
     End With

    Здесь "Нумерованный список 2" -- это стиль моего списка.
     
    Ну лучше так, чем никак

    Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 07:58 22-10-2010 | Исправлено: vaulin, 09:47 22-10-2010
    Bluk



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята есть такая задача нумерую столбец в таблице циклом передвигаюсь вниз по столбцу, с формы операции задается количество повторений из этого же берутся число счетчика.
    Дак вот мне нужно остановить цикл в тот момент когда одна из ячеек окажется не пустой.
    К примеру цикл обрабатывает 20 ячеек, 15 ячейка не пустая на ней нужно выйти из цикла.
     
    Как определить пустая следующая ячейка или нет?

    Всего записей: 164 | Зарегистр. 14-08-2005 | Отправлено: 18:14 04-11-2010
    fireart



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте. Я не знаток в программировании, по этому не пинайте сильно. Есть word2003 документ со статистикой звонков, содержимое следующее
     
    Тлф: 1001     Имя:Фамилия 1. (11-11-01)
                                                        Городских:171
        Общая длительность:4:14:25    Всего звонков:171    Длительность:4:14:25
        Общая стоимость:91,53            Стоимость:91,53
     
    Тлф: 1002            Имя:Фамилия 2 (11-11-02)
        Всего звонков:305                    Городских:305
        Общая длительность:7:44:15    Стоимость:166,59    Длительность:7:44:15
        Общая стоимость:166,59
     
    Тлф: 1003            Имя:Фамилия 3 (11-11-03)
        Всего звонков:103                   Городских:103
        Общая длительность:2:03:16     Длительность:2:03:16
        Общая стоимость:48,6             Стоимость:48,6
     
     
    необходимо перенести в excel2003 в следующую таблицу значения с номером, фамилией и общей стоимостью в столбцы A, B и D соответственно
     
    Номер       Наименование                    Общая длительность     Общая стоимость
    Тлф: 1001       Имя:Фамилия 1 (11-11-01)    5:39                             91,53
    Тлф: 1002       Имя:Фамилия 2 (11-11-02)      10:17                     166,59
    Тлф: 1003       Имя:Фамилия 3 (11-11-03)      3:0                             48,6
     
     
    при этом Общая длительность высчитывается по формуле =(ОКРУГЛВНИЗ(D2/0,27/60;0)) & ":" & ОКРУГЛ(ОСТАТ(D2/0,27;60);1) из общей стоимости.  
    Сейчас делаю вручную, то есть копирую номер телефона, фамилию и общую стоимость. А это очень долго, тем более там позиций более 80. Как правильно написать макрос для переноса значений из word  excel? Если есть аналогичные примеры дайте ссылку. Извиняюсь если это обсуждалось ранее.
     

    Всего записей: 11 | Зарегистр. 27-05-2008 | Отправлено: 14:13 09-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fireart
    проблема с excel или извлечением данных?
    у первого номера "Всего звонков:" не там где у остальных это верно?

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 15:59 09-11-2010
    MedvedevDM



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

    Цитата:
    Как определить пустая следующая ячейка или нет?

     
    А в полных ячейках у тебя стоят цифры или буквы?
    Пустая ячейка или нет, можно определить сравнением.

    Всего записей: 114 | Зарегистр. 03-11-2010 | Отправлено: 16:56 09-11-2010
    fireart



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    smirnvlad
    С excel проблем нет. Знать бы как в него извлечь данные из word и вставить в соответствующие столбцы.  

    Цитата:
     у первого номера "Всего звонков:" не там где у остальных это верно?

    да, тут уж как wintariff себя поведет.  
     
    -> Тлф: 1002  ->     Имя:Фамилия2 (11-11-02)п
    ->     Всего звонков:305           ->              Городских:305п
    ->    Общая длительность:7:44:15   ->    Стоимость:166,59    ->   Длительность:7:44:15п
    ->    Общая стоимость:166,59п
    ->Тлф: 1003    ->    Имя:Фамилия3 (11-11-03)
    ->     Всего звонков:103                       ->  Городских:103п
    ->     Общая длительность:2:03:16      ->    Длительность:2:03:16п
    ->     Общая стоимость:48,6              ->  Стоимость:48,6п
     
    Здесь "->" табуляция, "п"  переход строки
     
    Алгоритм я думаю должен быть такой - сначала задать счетчик n=1, далее  поиск текстового значения "Тлф", если найден копировать строку после -> начиная с "Тлф: 1xxx  ->  Имя:ФамилияX (11-11-0X)" до перехода строки "п" в excel An, (так как есть -> то Значение с именем вставится в соответствующую ячейку Bn ) , далее искать "стоимость" (без учета регистра букв) если найден копировать числовое значение которое идет после "Стоимость:" до перехода строки "п" и вставлять в Dn. После в поле Cn вставить функцию =
    (ОКРУГЛВНИЗ(Dn/0,27/60;0)) & " ч " & ОКРУГЛ(ОСТАТ(Dn/0,27;60);1) & " мин"   и увеличить счетчик n+1
     
    Закончить поиск при нахождении двух символов перехода строки. (так заканчивается word документ)
     
    Только как это правильно описать на VBA?  
     
     
     

    Всего записей: 11 | Зарегистр. 27-05-2008 | Отправлено: 17:40 09-11-2010 | Исправлено: fireart, 17:47 09-11-2010
    Bluk



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

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

     
    Как правило цифры и точки, бываает и буквы.  
    я просто не могу подобрать правильный оператор из selection.

    Всего записей: 164 | Зарегистр. 14-08-2005 | Отправлено: 19:23 09-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fireart
    макрос для Word создаст новый Excel
    если так не сработает нужен будет кусок от реального файла
    Подробнее...
     
    Bluk
    наверное это подойдет
    Подробнее...

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 16:28 10-11-2010
    fireart



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    smirnvlad
    Спасибо огромное, все работает отлично, без ошибок. Единственное что я изменил "=CONCATENATE(ROUNDDOWN(RC[1]/0.27/60,0),"" "",""ч"","" "",ROUND(MOD(RC[1]/0.27,60),1),"" "",""мин"")"  
    Как изменить размер шрифта, курсив? Для шапки в excel  
    Номер       Наименование                    Общая длительность     Общая стоимость  
    и колонны D (с общей стоимостью ) выделить жирным шрифтом, колонны А и В (без шапки)сделать 8 размером шрифта, а для В еще и курсив?

    Всего записей: 11 | Зарегистр. 27-05-2008 | Отправлено: 18:02 10-11-2010
    smirnvlad

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

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 18:57 10-11-2010
    vaulin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! не могу запустить пример, приводимый на сайте MS:  
    Ссылка почему-то не подключается Scripting Runtime, строчки типа "Dim fsoSysObj      As FileSystemObject" не воспринимаются как нужно, т.е. "FileSystemObject" не подсвечивается

    Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 14:08 11-11-2010 | Исправлено: vaulin, 14:10 11-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaulin
    если офис не 2000, как по ссылке, то про работу с файлами надо почитать про более новый VB, например Ссылка

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 14:21 11-11-2010
    vaulin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    да, офис 2007, спасибо за ответ, попробую. Программирую на VBA for Word, а система WinXP

    Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 15:04 11-11-2010 | Исправлено: vaulin, 15:06 11-11-2010
    fireart



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    smirnvlad
    Спасибо! Теперь все как надо, пару косметических поправок и вот конечный результат...

    Всего записей: 11 | Зарегистр. 27-05-2008 | Отправлено: 16:21 11-11-2010
    Bluk



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

    Цитата:
    Bluk  
    наверное это подойдет  
    Подробнее...

     
    Спасибо то что нужно, правда не много переделал.
    Расширил немного сваи знания спасибо тебе.

    Всего записей: 164 | Зарегистр. 14-08-2005 | Отправлено: 18:33 11-11-2010
    vaulin

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

    Цитата:
    если офис не 2000, как по ссылке, то про работу с файлами надо почитать про более новый VB, например Ссылка

    что-то не нашел никаких замечаний по подключению этой библиотеки. Вроде всё правильно сделал: в Reference указал данную библиотеку. А когда начинаю ее использовать, ее как-будто бы и нет. Может Microsoft Scripting Runtime под VBA не работает, а только под VB? Или для 2007 офиса эта библиотека не совместима с XP?

    Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 06:47 12-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaulin
       Dim fsoSysObj      As Scripting.FileSystemObject

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 07:43 12-11-2010
    vaulin

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

    Цитата:
      Dim fsoSysObj      As Scripting.FileSystemObject  

     
    а как объявить объект "Folder"? Dim fdrFolder as Scripting.Folder что-то не работает. Пишу следующий код:

    Код:
       Dim dctDict As Variant 'Dictionary
       Dim strPath As Variant
       Dim fsoSysObj As Scripting.FileSystemObject  
       Dim fdrFolder As Scripting.Folder   'Dim fdrFolder: Set fdrFolder = CreateObject("Scripting.Folder") '      As Folder
       Set dctDict = CreateObject("Scripting.FileSystemObject")    'New Dictionary
       Set fsoSysObj = CreateObject("Scripting.FileSystemObject")
       Set fdrFolder = fsoSysObj.GetFolder(strPath)
     

    на последней строчке выдает ошибку "5: Invalid procedure call or argument"
     

    Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 09:04 12-11-2010 | Исправлено: vaulin, 09:23 12-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaulin
    может неправильный argument
     
    пример
    Подробнее...

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 10:16 12-11-2010
    Открыть новую тему     Написать ответ в эту тему

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