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


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

Открыть новую тему     Написать ответ в эту тему

sashko1980



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
msmih
мне тоже интересно, как у вас получится это реализовать. Хотелось бы, чтобы тот текст в документе, который назван Событие мог быть элементом управления содержимым (Ворд 2007 и старше ). Гуру VBA, пожалуйста ответьте!

Всего записей: 321 | Зарегистр. 01-03-2006 | Отправлено: 02:01 31-07-2014
mrdime



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет,
Такой вопрос: в документе куча линий и рамок, созданных из тех же линий (объекты msoLine). Всю эту хрень надо удалить. Написал маленький макрос:

Цитата:
Sub DelShapes()
Dim MySh As Shape
 
    For Each MySh In ActiveDocument.Shapes
        If MySh.Type = msoLine Then
            MySh.Delete
        End If
    Next MySh
 
End Sub
 

Запустил и сначала подумал, что не работает. Оказалось, чтобы удалить ВСЕ линии (а их было около 100) пришлось его запускать 4-5 раз. В чем проблема, почему он не удаляет все с первого прохода?

Всего записей: 2612 | Зарегистр. 04-01-2005 | Отправлено: 12:33 31-07-2014
msmih



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

Цитата:
мне тоже интересно

пока мыслей никаких. я не могу понять как определять дату. по сути это обычный текст.
Навскидку некая генерация от 1 января по 31 декабря. И абзац равен этой генерации. Только как сделать ума не приложу

Всего записей: 1151 | Зарегистр. 29-01-2006 | Отправлено: 19:27 31-07-2014
surgutfred



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нужно как то автоматизировать задачу:
есть штук 50 текстовых файлов в DOS кодировке с кирилицей, нужно их пересохранить в docx формат. Без VBA это не сделать я так понимаю. Когда то пару макросов в excel писал, так что начальное представление имею, но не глубоко. Есть пример поковырять?

Всего записей: 589 | Зарегистр. 21-08-2001 | Отправлено: 15:33 15-08-2014
vavavol



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ребята, может, подскажет кто-небудь? В VBA формирую вордовский документ. Алгоритм такой: есть два открытых программно документа - временный и основной. В временный загружаю шаблон из файла, вставляю закладки, потом Cut - Paste в основной. Ну, и так далее набиваю основной. Но вопрос не в этом. В конце после сохранении основного документа с помощью Save As при параметре wdFormatDocument97 в начале каждой страницы появляются пустая строка. А при wdFormatDocumentDefault  - нормально. Что это за строка и как это побороть?

Всего записей: 169 | Зарегистр. 25-01-2006 | Отправлено: 13:17 27-08-2014
niccolo

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ - подскажите - есть ли средство поменять в распознанном тексте все подписи к рисункам и названия таблиц на соответствующие ссылки в Ворд с предварительной настройкой способа нумерации, а также строки, пронумерованные но имеющие стиль простой текст, сделать заголовками соответствующего уровня, например 1. Введение - чтобы стало нумерованным  заголовком 1-го уровня Введение, 1.2 Назначение - нумерованным заголовком 2-го уровня и т.п.?

Всего записей: 2142 | Зарегистр. 17-09-2001 | Отправлено: 18:08 15-09-2014
dezak20x

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

Цитата:
есть штук 50 текстовых файлов в DOS кодировке с кирилицей, нужно их пересохранить в docx формат.

Столкнулся с той же проблемой. Если файлов не тысячи, то быстрее руками (открыл, посмотрел, сохранил). Иначе приходится постоянно допиливать скрипт, т.к. много нюансов возникает, если файлы не по одному шаблону созданы были.
 
Добавлено:
Например, где-то кодировка превращается в мусор, где-то форматирование слетает, где-то текст обрывается на букве "я" и т.д.

Всего записей: 148 | Зарегистр. 21-11-2003 | Отправлено: 09:08 16-09-2014
sam29

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
Есть небольшая задача, с VBA пока хорошо не общался.
Как найти часть текста ( ХХХ: ) даже в таблицах и с последнего символа +1 взять 20 и присвоить переменной.  

Всего записей: 2 | Зарегистр. 21-03-2008 | Отправлено: 16:40 04-11-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как на VBA WORD воплотить такую задачу?
А именно рандомная(случайная) замена слов, т.е.
Например, слово "поэтому"  встречается 100 раз можно ли его занимать в случайном порядке этими словами
-иными словами
-следовательно
-таким образом можно заключить, что
-поэтому мы можем сделать вывод о том, что
-исходя из этого мы делаем вывод о том, что
-то есть
-таким образом мы делаем вывод о том, что
 
но чтобы слово поэтому тоже было в тексте. Например, 100 слов это 100%  
у нас  8 слов, соответственно, надо чтобы 12% слов было слово иными словами, 12% слово следовательно, 12% слово таким образом можно заключить, что... и так далее
12*7=84
а 16 процентов это слово поэтому.
но все эти слова случайно распределялись в тексте.
Можно ли такое сделать?

Всего записей: 345 | Зарегистр. 02-04-2011 | Отправлено: 14:09 21-11-2014
ALeXkRU



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

Цитата:
но чтобы слово поэтому тоже было в тексте.

включить и его в этот список слов для замены...  
Тогда при случайном выборе из этого списка строк (массива) оно будет также встречаться, как и другие

Всего записей: 10045 | Зарегистр. 03-12-2003 | Отправлено: 16:04 21-11-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ALeXkRU
а как это делать?) Я немного не программист)

Всего записей: 345 | Зарегистр. 02-04-2011 | Отправлено: 17:56 21-11-2014
5peciali5t



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
доброго времени суток!
 
возникла задачка по удалению из документа разрывов раздела (которые натыканы по ctrl + enter и ищутся поиском по спецсимволам по коду ^b ) и абзацев (которые натыканы по enter и ищутся по спецсимволам по коду ^p).
после автоматической записи макроса получилось

Код:
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^b"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.Delete Unit:=wdCharacter, Count:=1

и

Код:
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.Delete Unit:=wdCharacter, Count:=1

проблема в том что я заранее не знаю сколько в документе будет этих абзацев и разрывов разделов. что можно дописать в тело скрипта чтобы он производил поиски и удаления до той поры пока совпадения не закончатся.
были мысли скопипастить фрагмент кода скрипта раз по 100, но как то это на мой взгляд некрасиво, наверняка есть способ зациклить процедуру поиска и удаления до завершения обработки совпадений.
заранее признателен за помощь

----------
Intel Ci7-2600K 3.4@4.5 Ghz/GeForce GTX 550 Ti 1024Mb/240Gb SSD+9Tb HDD's/RAM 16 Gb DDR3 1600/23" ACER T231Hbmid Multi-Touch Sensor Display

Всего записей: 1439 | Зарегистр. 17-07-2009 | Отправлено: 23:50 06-12-2014 | Исправлено: 5peciali5t, 23:52 06-12-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, 5peciali5t
Добавьте replace:=wdReplaceAll
Заменит все совпадения в текущем документе.

Код:
 
Sub DeleteChars()
    With ActiveDocument.Content.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        For Each Chars In Array("^p", "^b")
            .Execute FindText:=Chars, Replace:=wdReplaceAll
        Next
    End With
End Sub
 

PS. А задачи на bat какое отношение к VBA имеют???

Всего записей: 1538 | Зарегистр. 07-08-2002 | Отправлено: 00:53 07-12-2014 | Исправлено: Alex_Piggy, 00:56 07-12-2014
5peciali5t



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_Piggy
огромное спасибо за отклик!
задачи на bat к vba отношения не имеют, я просто надеялся что если эту ветку никто не мониторит, то в топике по bat файлам с большой вероятностью найдутся разносторонне образованные в этом плане специалисты
ваш скрипт на примере простого документа без таблиц отрабатывает как надо, но в моем случае задача оказалась немного сложнее.
нужно объединить верхние и нижние границы таблиц, между которыми если включить отображение непечатаемых символов стоят разрывы строк и разрыв раздела, которые находятся по ^p и ^b но почему-то не обрабатываются скриптом
пример сформированного документа который нужно обработать http://pion.rghost.net/59474105
ума не приложу если честно почему в простом документе работает, а моем нет

----------
Intel Ci7-2600K 3.4@4.5 Ghz/GeForce GTX 550 Ti 1024Mb/240Gb SSD+9Tb HDD's/RAM 16 Gb DDR3 1600/23" ACER T231Hbmid Multi-Touch Sensor Display

Всего записей: 1439 | Зарегистр. 17-07-2009 | Отправлено: 17:59 07-12-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, 5peciali5t
А если так? Удалить все между двумя таблицами? По следам How to join multiple tables together in a word document ?

Код:
 
Sub JoinTables()
  With ActiveDocument
    For i = .Tables.Count To 2 Step -1
      Set rng = .Tables(i).Range
      rng.Collapse wdCollapseStart
      rng.Start = .Tables(i - 1).Range.End
      rng.Delete
    Next
  End With
End Sub
 

Если есть нужный текст между таблицами, то вместо "rng.Delete" использовать "If rng.Characters.Count=1 Then rng.Delete"

Всего записей: 1538 | Зарегистр. 07-08-2002 | Отправлено: 19:03 07-12-2014
5peciali5t



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_Piggy
эффект просто потрясающий!
все именно так, как и требовалось сделать.
огромное спасибо за помощь!

----------
Intel Ci7-2600K 3.4@4.5 Ghz/GeForce GTX 550 Ti 1024Mb/240Gb SSD+9Tb HDD's/RAM 16 Gb DDR3 1600/23" ACER T231Hbmid Multi-Touch Sensor Display

Всего записей: 1439 | Зарегистр. 17-07-2009 | Отправлено: 20:35 07-12-2014
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как сделать, чтобы в документе слова менялись на синонимы из этого словаря
http://rghost.ru/private/59987233/c20a264348e11ad1e4f7e1f9d65384b9
но с учетом падежей и склонений.
у меня есть скрипт который позволяет учитывать падежи  если есть предлог с  
 
Function ConvertToAblativeCase(ByVal strToConv As String) As String
    Dim sent() As String, base As String, ending As String
    sent = Split(strToConv, , 2)
    ending = Right(sent(0), 1)
    Select Case ending
        Case "а", "й", "я"
            base = Left(sent(0), Len(sent(0)) - 1)
            Select Case ending
                Case "а"
                    sent(0) = base & "ой"
                Case "й"
                    sent(0) = base & "ем"
                Case "я"
                    sent(0) = base & "ей"
            End Select
        Case "ь"
            sent(0) = sent(0) & "ю"
        Case "е", "о"
            sent(0) = sent(0) & "м"
        Case Else
            sent(0) = sent(0) & "ом"
    End Select
    ConvertToAblativeCase = Join(sent)
End Function

Всего записей: 1176 | Зарегистр. 04-02-2011 | Отправлено: 17:54 26-12-2014
RomanoSadovnik

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Futurism
Писать скрипт для всех падежей и склонений - занятие неблагодарное. Как идею могу предложить выдрать готовую dllку с Орфо (ссылка на варезник в шапке, мануал в pdf по функциям в ней есть на сайте разработчика), зарегить её (внимательнее с System32 or SysWOW64, если что), а словарь синонимов брать формат не txt (оценить ваш с rghost не могу - удалён), а переконвертированный html -> doc (на Флибусте в html пока есть).

Всего записей: 47 | Зарегистр. 23-10-2010 | Отправлено: 02:57 08-03-2015 | Исправлено: RomanoSadovnik, 02:59 08-03-2015
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста, школяру)
Я взял ряд рефов и диссеров и скопировал нужные мне из них части в один общий документ.
Т.о. у нас есть  
5 доков с исходными нужными абзацами
и общий док, куда нужные части скопированы.
вот общий док
http://rusfolder.com/43578926
вот 5 доков
http://rusfolder.com/43578888
У каждого из пяти файлов есть оглавление.  
С каждого файлы взято лишь несколько глав.
Например
док.1  глава 2 из оглавления
док.3 глава 1 - главу 1 из оглавления 3-го дока.
и так далее
В общий файл  копируется название самой главы  и её содержимое. Выглядит это так
Например вырезка из общего файла
Психолого-педагогические особенности подросткового возраста.. 13 док 3. Указание что глава такая-то взята из 3-его документа.
ДОК4
1.1.    Дефиниции понятия «жизнеспособность» субъекта
т.е. глава 1.1 взятая из дока 4.
и так далее
где начинается главы помечено красным. Т.е. начало и конец глав обозначается красным выделением название дока.
 
Например, кусок 3 документа помечен красным, начинается на 3-ей странице заканчивается на 7 странице, где пометка что док4 красным.
 
Что надо сделать. Надо чтобы из каждого документа  был взят список литературы, но только той главы, которая был оттуда скопистена.
Например для куска из 3 дока видно это указание лит-ры
[3, 23, 40, 44, 66, 114].
Идем вниз, где этот список литературы дока 3. выискиваем  эти номера.  
копируем в общий документ в конец, где список литературы  эти номера и авторов стоящих за ними
выглядеть должно  так
ДОК3
[3, 23, 40, 44, 66, 114]
    Абульханова-Славская К.А. Деятельность и психология личности. - М., 1980. - 327 с.
    Асмолов    А.Г. Психология личности. - М.,1990,- С.167-173, 307-363.
    Братусь Б. С Аномалии личности. - М.: Мысль, 1988. - С.48-72.
    Бреслов Г. М. Эмоциональные процессы. - Рига, 1984.-196с.
там в конце списка литературы есть этот образец.
Аналогичным образом нужно также сделать и для остальных доков
док 4
но там оформление источника идет т.о.  
функций, с наиболее активными и продуктивными фазами человеческой жизни (Джидарьян, 2008).
т.е. не цифрами а фамилией и годом. Если в каком-то из доков такой формат. то из списка лит-ры 4 дока в общий файл  просто прописывается
фамилия автора и его труд
типа док 4
35.    Джидарьян И.А. Гуманистический смысл идей Б.Г. Ананьева о системном человекознании. // М
В 1 доке
там оформление идет через сноски. в таком случае из документа копируется в список литературы ,примечание этих сносок, например, на странице 3
     Зайцев, Д.В. Проблемы обучения детей с ограниченными возможностями адоровья / Д.В. Зайцев // Педагогика. — 2003. —№ 1. — С. 22.
Зайцев, ДБ. Интегрированное образование детей с ограниченными возможностями / Д.В. Зайцев // СОЦИС. — 2004. — № 7. — С. 129.
типа док 1
Зайцев, Д.В. Проблемы обучения детей с ограниченными возможностями адоровья / Д.В. Зайцев // Педагогика. — 2003. —№ 1. — С. 22.
Зайцев, ДБ. Интегрированное образование детей с ограниченными возможностями / Д.В. Зайцев // СОЦИС. — 2004. — № 7. — С. 129.
 
помогите, плиз такой макрос сделать.
 

Всего записей: 345 | Зарегистр. 02-04-2011 | Отправлено: 17:39 01-05-2015
ptr73

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

Всего записей: 251 | Зарегистр. 03-07-2007 | Отправлено: 09:10 02-05-2015
Открыть новую тему     Написать ответ в эту тему

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

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru