Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
86 / 2 / 1
Регистрация: 04.03.2012
Сообщений: 8

Как удалить из текста переносы, расставленные вручную

12.12.2012, 23:02. Показов 9943. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание вообще такое:

Составить программу удаления из текста переносов, расставленных вручную. Программа должна работать в двух режимах:
1 - автоматическое удаление переносов. При этом обнаруженные дефисы между словами сразу удаляются;
2 - запрос на удаление переноса. При обнаружении в тексте слова, разделенного дефисом на части, на экран выводится диалоговое окно с найденным словом. При этом пользователь выбирает одно из трех действий - удалить перенос, оставить перенос или завершить выполнение макрокоманды.

1 я сделала. сделала форму вида
слово,удалить. найти далее. удалить все.

вопрос для 2 части.

вот процедура для удаления всех:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
 Private Sub delallButton_Click() 
 Selection.Find.ClearFormatting 
 Selection.Find.Replacement.ClearFormatting 
 With Selection.Find 
 .Text = Chr(31) 
 .Replacement.Text = "" 
 .Forward = True 
 .Wrap = wdFindContinue 
 End With 
 Selection.Find.Execute Replace:=wdReplaceAll 
 End Sub
как мне вывести само слово? было предположение, что можно найти дефис и записать в 2 строки часть слова до и после. Но как определить позицию курсора? или это можно как-то по-другому сделать?(с vba мало знакома- 2 лабы по нему всего, поэтому такие вот вопросы)

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

Может, у кого что-то похожее есть....
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2012, 23:02
Ответы с готовыми решениями:

Как удалить из текста пустые строки и переносы?
Имеется текст Строка1

Как удалить переносы из переменной?
Текстовый файл читается построчно. Исходя из содержания строки, часть строки заносится в переменную (парсинг). Далее текст, только для...

Как сделать такие переносы текста
Приветствую всех, я тут новенький, не обижайте если что )) Вопрос такой, мне нужно взять вордовский текст вроде

9
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
13.12.2012, 03:54
Теперь есть.
Visual Basic
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
Sub ThreeWAYS()
Dim r As Object  'указатель для слов
Dim j As Byte    'счётчик для мягких переносов в одном слове
 
Selection.HomeKey unit:=wdStory 'становимся в начало текста
    With Selection.Find
    .Text = Chr(31)             'ищем мягкие переносы
    .Wrap = wdFindStop
    .Execute
        Do                      'пока поиск находит .Text
                Set r = Selection.Words.Last
            Do              'пока мы (курсор) на анализируемом слове
                t = Replace(Selection.Words.Last.Text, Chr(31), "")
                j = j + 1 'номер символа переноса
                    Select Case _
                     MsgBox("Удалить " & j & "-й перенос " & _
                    "в слове «" & t & "»?", vbYesNoCancel)
                        Case Is = vbYes:    Selection.Delete
                        Case Is = vbNo
                        Case Is = vbCancel: Exit Sub
                    End Select
                                    .Execute 'выделение следующего
            Loop Until Replace(Selection.Words.Last.Text, Chr(31), "") <> t
                j = 0
        Loop Until Not .Found
    End With
End Sub
Некорректно работает, когда есть одинаковые слова-соседи, например Баден-Баден (Ба¬ден-Ба¬ден), а так:
Миниатюры
Как удалить из текста переносы, расставленные вручную  
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
13.12.2012, 04:03
Назначил программу клавише F8:
Вложения
Тип файла: doc HiphenSoft.doc (40.0 Кб, 44 просмотров)
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
13.12.2012, 04:11
И также с последним в тексте символом Chr(31) плохо обходится.

Не по теме:

За 1,5 ч так и не отладил, но схема, надеюсь, ясна.

0
86 / 2 / 1
Регистрация: 04.03.2012
Сообщений: 8
13.12.2012, 20:05  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Sasha_Smirnov, спасибо большое за то, что откликнулись. не совсем то, что мне надо, но я уже сама сделала- в час ночи меня вдруг попёрло))))))
надо было удалять переносы, которые реально были расставлены через "Разметка страницы- расстановка переносов- ручная". Позже постараюсь выложить документ.
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
13.12.2012, 20:14
Через что переносы расставлены — Word не помнит. Chr(31) он и в Африке Chr(31).
Цитата Сообщение от асоишница Посмотреть сообщение
Позже постараюсь выложить документ.
Ближе к полуночи?.. Меня вот тоже среди ночи озаряет!
0
86 / 2 / 1
Регистрация: 04.03.2012
Сообщений: 8
13.12.2012, 20:21  [ТС]
Sasha_Smirnov, да я вообще днём не умею работать. все самые умные мысли всегда приходят в голову после 12)))))весь день могу просидеть, а в итоге ночью за час всё быстренько сделаю)))))
0
demon5305
15.12.2012, 01:46
асоишница, выложи пожалуйста код или документ, у нас задания совпали ... буду очень признателен)))
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
15.12.2012, 02:30
demon5305, вот отлаженный
Visual Basic
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
Sub ThreeRoads()
Dim r As Range  'указатель для обрабатываемого слова
 
Selection.HomeKey unit:=wdStory 'становимся в начало текста
    With Selection.Find
    .Text = Chr(31)             'ищем мягкие переносы
    .Wrap = wdFindStop
    .Execute
    If Not .Found Then MsgBox "Основной текст " & ActiveDocument & _
    " от мягких переносов [символов Chr(31)] очищен.": Exit Sub
        Do                      'пока поиск находит .Text
                Set r = Selection.Words.Last
            Do              'пока мы (курсор) на анализируемом слове
                t = Replace(Selection.Words.Last.Text, Chr(31), "")
                    Select Case _
                     MsgBox("Удалить мягкий перенос " & _
                    "в слове «" & Trim(t) & "»?", vbYesNoCancel)
                        Case Is = vbYes:    Selection.Delete
                        Case Is = vbNo      'едем далее по тексту
                        Case Is = vbCancel: Exit Sub
                    End Select
                                    .Execute 'выделение следующего
            Loop Until Not .Found
        Loop Until Not .Found
    End With
End Sub
Цитата Сообщение от асоишница Посмотреть сообщение
При обнаружении в тексте слова, разделенного дефисом на части, на экран выводится диалоговое окно с найденным словом. При этом пользователь выбирает одно из трех действий - удалить перенос, оставить перенос или завершить выполнение макрокоманды.
Перепутаны понятия: дефисы — элементы слов, а знаки переноса — места, куда Word ставит упомянутый символ Chr(31)* при расстановке переносов. Этот символ виден лишь при отображении "невидимых символов", и как раз с ним мой код и работает (аналогично режиму 1).
_____________________
* да, на переносе слов он такой же, как дефис, но вообще в тексте не виден (вводится вручную через Alt-031)
0
86 / 2 / 1
Регистрация: 04.03.2012
Сообщений: 8
15.12.2012, 17:12  [ТС]
После сдачи лабы увидела такую вот книжку с выполненным моим заданием в качестве примера. Но я не проверяла.

С.А.Малышев-Самоучитель VBA.Как это делается в Word, Excel, Access -2001

Ищите её архивом(в нём вложены документы с макросами)

demon5305, своё пока нет возможности скинуть.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2012, 17:12
Помогаю со студенческими работами здесь

Удалить части строки, заключенные в правильно расставленные фигурные скобки
Помогите пожалуйста с задачкой. Задание:Задана строка. Нужно удалить ее части, заключенные в правильно расставленные фигурные скобки....

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

DataGridView как удалить строку вручную?
Добрый день. Недавно в C#. Подскажите, пожалуйста, чего-то не могу сообразить. Есть на форме DataGridView, AllowUserToDeleteRows ==...

Как удалить ICS (Общий доступ к подключению к Интернету) вручную?
Ребят очень прошу помогите, может кто сталкивался с такой проблемой: 1. Установил RALINK wireless software для раздачи Интернета AdHoc...

Удалить переносы строк в файле
Нужен код программы который будет считывать с файла стихотворение( 2 четверостишья) вот пример В дверях эдема ангел нежный Главой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru