Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2016, 07:49   #11
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию

Цитата:
Прикол виден после команды ActiveDocument.Lists(1).Range.Selec t
И куда это писать?
taras-proger вне форума Ответить с цитированием
Старый 03.01.2016, 23:09   #12
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Найди то не знаю что

Сюда-сюда. Только неясно, в чём прикол: 1-й список команда выделяет:
Изображения
Тип файла: jpg 2016-01-03_23-05_всё_как_надо.jpg (45.1 Кб, 135 просмотров)
Sasha_Smirnov вне форума Ответить с цитированием
Старый 04.01.2016, 03:55   #13
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
...в чём прикол: 1-й список команда...
Сам список, что в документе-примере, и есть прикол. Код только поясняет его суть. Документ не поврежден, создать специально такой список невозможною, только если глюк словишь. Еще раз:
1. У одного списка - List, может быть только один формат - ListTemplate.
2. В примере же, List.Range.Select выделит фрагмент, где два ListTemplate.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 06.01.2016, 00:47   #14
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Неправильный перенос
Копия невернй перенос.jpg
Вадим Мошев вне форума Ответить с цитированием
Старый 22.01.2016, 21:38   #15
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Жесть со стилями в VBA

Как оказалось, обычное чтение свойств стиля, из коллекции Document.Styles, вызывает изменение документа. Мало того, это же происходит если просто просмотреть свойства стиля в дебаггере: было Document.Saved=True > остановил код > просмотрел стиль в "Watch Window" > стало Document.Saved=False. Проблема касается неиспользуемых стилей (Style.InUse=False). Как только вы обращаетесь к такому стилю, он как бы активируется и цепляется к документу. Это приводит к цепной реакции и меняются уже ваши, используемые стили. Word перенастраивает стили, по каким-то своим принципам. Например, свойство Style.BaseStyle меняется само по себе, даже если это свойство уже имело не пустое значение. Как результат, у заголовков может появится нумерация, и т. д.

В общем, стили где Style.InUse=True – это уже нормальные адекватные стили, работать можно, а Style.InUse=False лучше макросами не трогать, вообще!

Проверено в Word 2016-2003.

Желающие убедиться, могут прогнать этот безобидный макрос, на сложно-форматированном документе, а потом немного поработать в нем:
Код:
Sub StylesDead()
    Dim STY As Style, S As String
    For Each STY In ActiveDocument.Styles
        S = STY.Description
    Next
End Sub
Что совсем хреново, эти изменения нельзя отменить, и если документ не был сохранен... Ну и для полного "счастья" – защита документа от изменений (Document.Protect), не спасает от этого глюка Хорошо бы знать, порядок подключения стиля к документу, но инфы не нашел.

Ни документации, ни ответов на форумах мелкодивелоперов Пока допер до этого... весь мелкософт неделю икать будет
Макросы на заказ и готовый пакет - http://mtdmacro.ru/

Последний раз редактировалось Вождь; 22.01.2016 в 22:26.
Вождь вне форума Ответить с цитированием
Старый 28.07.2016, 09:48   #16
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Как бы и не глюк, но в документации одно, а работает по-другому.

Цитата: "...You can use the ReDim statement to change the size of one or more dimensions of an array that has already been declared..."

Оказалось, что для:
Код:
ReDim A(100)
вовсе не обязательно объявлять переменную:
Код:
Dim A as Variant
ReDim A(100)
так как, ReDim включает в себя и Dim.
Компилятор и экзекутор молчат в тряпочку на то, что Dim отсутствует, при наличии Option Explicit.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 19.10.2016, 16:02   #17
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию Свежочек

1. Если выделить слово с орфографической ошибкой, а в параметрах языка выставить флаг "Не проверять правописание", то ошибка должна исчезнуть. Так и было в Word 2003. Но, начиная с Word 2007, это не работает, когда текст в кавычках и язык русский. Времени прошло вагон, а править не спешат.

2. Если выставить Selection.Find.Wrap = wdFindContinue, то при проходе поиска через край (начало/конец документа), этот параметр самосбросится, и станет wdFindStop. Думаю, делали с благими намерениями, но в документации забыли написать. Впрочем, уже заметил, что всякие автодействия Word не описаны нигде.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 13.01.2017, 13:14   #18
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Наткнулся на интересный сбой, когда стиль имеет имя-номер, например MyStyle.NameLocal = "05" или "100" и т.п. При присвоении такого стиля, его имя воспринимается как номер, а не как текст. То есть, в итоге, мы получим номер какого-то встроенного стиля, из WdBuiltinStyle

Вот так, воспринимает как номер:
Код:
Selection.Find.Style = MyStyle
А так, работает нормально:
Код:
Selection.Find.Style = CStr(MyStyle)
или лучше так
Код:
Selection.Find.Style = MyStyle.NameLocal
Макросы на заказ и готовый пакет - http://mtdmacro.ru/

Последний раз редактировалось Вождь; 13.01.2017 в 13:21.
Вождь вне форума Ответить с цитированием
Старый 28.07.2017, 09:06   #19
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Как-то привык уже с этим работать, но глюк очень серьезный, для всех кто пишет макросы!

Работает эта гадость так:
1. Открываем в Word документ с макросом.
2. Правим текст документа.
3. Переходим в редактор VBA и правим макрос.
4. Возвращаемся в документ и жмем кнопку Отмена (Undo) до упора, пока она не побелеет.
5. Жмем закрыть документ, и он молча закрывается, несмотря на измененный код макроса. То есть, Word считает, что никаких изменений в документе не произошло и сохранять его не надо.
6. В результате, потеряны все доработки макроса.

Не поможет даже нажатие кнопки Сохранить документ. Способ борьбы: перед закрытием документа, в тексте набрать пробел, например, и удалить этот пробел. Word тогда считает, что документ изменен.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/

Последний раз редактировалось Вождь; 28.07.2017 в 09:14.
Вождь вне форума Ответить с цитированием
Старый 29.08.2017, 13:06   #20
Miton
 
Аватар для Miton
 
Регистрация: 24.08.2017
Сообщений: 3
По умолчанию

Я как то словил ошибку при попытке открытия файла. Файл вроде целый, нигде не был поврежден. Word все равно не хочет открывать файл! С горем пополам проблема решилась. Если у кого то возникла подобная проблема вот решение: http://userologia.ru/oshibka-word-pr...iya-fajla.html пользуйтесь на здоровье)
Miton вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собираем команду для FAQ Aexx Свободное общение 112 14.10.2009 09:20
Собираем компьютер за 30 минут mihali4 Компьютерное железо 24 08.04.2009 19:11
Собираем добровольцев на проектик al_mt Свободное общение 0 13.03.2007 12:02