Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/word 2007 удаление части текста в таблице - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
word 2007 удаление части текста в таблице
lapin9126 Дата: Среда, 25.11.2015, 17:13 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго дня всем. Как с помощью макроса удалить текст в каждой ячейки второго столбца во всей таблице, после текста (^34^32<[а-яё]@['а-яё]@>) и до конца текста, в каждой ячейке.
Пример:
ВОРОНИНЫ" сериал Маша взрослеет–у неё появляются новые интересы, которые пугают родителей, особенно папу! Костя и Вера перед выбором: спрятать свою девочку за семью замками или предоставить ей свободу?
Надо оставить:
ВОРОНИНЫ" сериал
К сообщению приложен файл: 5191482.docx (48.4 Kb)
 
Ответить
СообщениеДоброго дня всем. Как с помощью макроса удалить текст в каждой ячейки второго столбца во всей таблице, после текста (^34^32<[а-яё]@['а-яё]@>) и до конца текста, в каждой ячейке.
Пример:
ВОРОНИНЫ" сериал Маша взрослеет–у неё появляются новые интересы, которые пугают родителей, особенно папу! Костя и Вера перед выбором: спрятать свою девочку за семью замками или предоставить ей свободу?
Надо оставить:
ВОРОНИНЫ" сериал

Автор - lapin9126
Дата добавления - 25.11.2015 в 17:13
lapin9126 Дата: Понедельник, 30.11.2015, 12:51 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Не уж-то не выполнимо.
 
Ответить
СообщениеНе уж-то не выполнимо.

Автор - lapin9126
Дата добавления - 30.11.2015 в 12:51
Gustav Дата: Понедельник, 30.11.2015, 13:23 | Сообщение № 3
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
после текста (^34^32<[а-яё]@['а-яё]@>)

И что это за кабалистика? Если шаблон регулярного выражения, то какой-то странный диалект... %) А можно как-то нормальными человеческими словами произнести?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
после текста (^34^32<[а-яё]@['а-яё]@>)

И что это за кабалистика? Если шаблон регулярного выражения, то какой-то странный диалект... %) А можно как-то нормальными человеческими словами произнести?

Автор - Gustav
Дата добавления - 30.11.2015 в 13:23
lapin9126 Дата: Понедельник, 30.11.2015, 13:42 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Пример же есть.
 
Ответить
СообщениеПример же есть.

Автор - lapin9126
Дата добавления - 30.11.2015 в 13:42
Gustav Дата: Понедельник, 30.11.2015, 14:07 | Сообщение № 5
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Ну, например, так. Точнее, именно "на пример" - про конкретно "сериал" :)
[vba]
Код
Sub clearEndOfCell()
    Dim arr
    Dim tbl As Table
    Dim i As Integer
            
    Set tbl = ThisDocument.Tables(1)
        
    For i = 1 To tbl.Rows.Count
        arr = Split(tbl.Cell(i, 2).Range.Text, """ сериал ")
        If UBound(arr) > 0 Then
            tbl.Cell(i, 2).Range.Text = arr(0) & """ сериал"
        End If
    Next i
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНу, например, так. Точнее, именно "на пример" - про конкретно "сериал" :)
[vba]
Код
Sub clearEndOfCell()
    Dim arr
    Dim tbl As Table
    Dim i As Integer
            
    Set tbl = ThisDocument.Tables(1)
        
    For i = 1 To tbl.Rows.Count
        arr = Split(tbl.Cell(i, 2).Range.Text, """ сериал ")
        If UBound(arr) > 0 Then
            tbl.Cell(i, 2).Range.Text = arr(0) & """ сериал"
        End If
    Next i
End Sub
[/vba]

Автор - Gustav
Дата добавления - 30.11.2015 в 14:07
lapin9126 Дата: Понедельник, 30.11.2015, 14:32 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Выдаёт ошибку.
К сообщению приложен файл: 4643846.jpg (52.0 Kb) · 4290291.jpg (30.7 Kb)
 
Ответить
СообщениеВыдаёт ошибку.

Автор - lapin9126
Дата добавления - 30.11.2015 в 14:32
Gustav Дата: Понедельник, 30.11.2015, 15:08 | Сообщение № 7
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Квалификатор ThisDocument предполагает погружение макроса в документ с обрабатываемой таблицей, а не в шаблон Normal.dot.
Если же хотите работать из Normal.dot, то замените ThisDocument на ActiveDocument.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеКвалификатор ThisDocument предполагает погружение макроса в документ с обрабатываемой таблицей, а не в шаблон Normal.dot.
Если же хотите работать из Normal.dot, то замените ThisDocument на ActiveDocument.

Автор - Gustav
Дата добавления - 30.11.2015 в 15:08
Gustav Дата: Понедельник, 30.11.2015, 17:47 | Сообщение № 8
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
А вот и версия с исходной регуляркой подоспела:
[vba]
Код
Sub clearEndOfCell_2()
    Dim arr
    Dim tbl As Table
    Dim i As Integer
    Dim fnd As Find
    Dim sep As String
    
    Set tbl = ActiveDocument.Tables(1)
            
    For i = 1 To tbl.Rows.Count
        Set fnd = tbl.Cell(i, 2).Range.Find
            
        With fnd
            .Text = "^34^32<[а-яё]@['а-яё]@>"
            .Replacement.Text = ""
            .MatchWildcards = True
        End With
            
        fnd.Execute
        If fnd.Found Then
            sep = fnd.Parent.Text
            arr = Split(tbl.Cell(i, 2).Range.Text, sep)
            tbl.Cell(i, 2).Range.Text = Trim(arr(0) & sep)
        End If
    Next i
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеА вот и версия с исходной регуляркой подоспела:
[vba]
Код
Sub clearEndOfCell_2()
    Dim arr
    Dim tbl As Table
    Dim i As Integer
    Dim fnd As Find
    Dim sep As String
    
    Set tbl = ActiveDocument.Tables(1)
            
    For i = 1 To tbl.Rows.Count
        Set fnd = tbl.Cell(i, 2).Range.Find
            
        With fnd
            .Text = "^34^32<[а-яё]@['а-яё]@>"
            .Replacement.Text = ""
            .MatchWildcards = True
        End With
            
        fnd.Execute
        If fnd.Found Then
            sep = fnd.Parent.Text
            arr = Split(tbl.Cell(i, 2).Range.Text, sep)
            tbl.Cell(i, 2).Range.Text = Trim(arr(0) & sep)
        End If
    Next i
End Sub
[/vba]

Автор - Gustav
Дата добавления - 30.11.2015 в 17:47
lapin9126 Дата: Понедельник, 30.11.2015, 18:22 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Gustav,
Спасибо за помощь, которую вы оказываете таким нубом в VBA как я, но как говориться: «На всякого мудреца довольно простоты». Попробовал ваш последний скрипт и вот что:
[moder]Не нужно цитировать целые посты - это нарушение Правил форума.
Удалила[/moder]
К сообщению приложен файл: 5193136.jpg (34.8 Kb)


Сообщение отредактировал Manyasha - Понедельник, 30.11.2015, 18:57
 
Ответить
СообщениеGustav,
Спасибо за помощь, которую вы оказываете таким нубом в VBA как я, но как говориться: «На всякого мудреца довольно простоты». Попробовал ваш последний скрипт и вот что:
[moder]Не нужно цитировать целые посты - это нарушение Правил форума.
Удалила[/moder]

Автор - lapin9126
Дата добавления - 30.11.2015 в 18:22
Gustav Дата: Понедельник, 30.11.2015, 18:39 | Сообщение № 10
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Что пишет? "Can't find project or library"? Если да, то покажите картинку "галок" в меню Tools-References. Есть ли там какие-нибудь галки "MISSING"?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЧто пишет? "Can't find project or library"? Если да, то покажите картинку "галок" в меню Tools-References. Есть ли там какие-нибудь галки "MISSING"?

Автор - Gustav
Дата добавления - 30.11.2015 в 18:39
lapin9126 Дата: Понедельник, 30.11.2015, 19:02 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Gustav, Других "галок" нет.
К сообщению приложен файл: 3079574.jpg (33.2 Kb) · 9633076.jpg (33.7 Kb)


Сообщение отредактировал lapin9126 - Понедельник, 30.11.2015, 19:06
 
Ответить
СообщениеGustav, Других "галок" нет.

Автор - lapin9126
Дата добавления - 30.11.2015 в 19:02
Gustav Дата: Понедельник, 30.11.2015, 19:28 | Сообщение № 12
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Ну, не знаю... У меня всё катит. Начинаю фантазировать "мозговым штурмом":
1. Уберите этот Trim нафиг, т.е. напишите просто: tbl.Cell(i, 2).Range.Text = arr(0) & sep
2. ИЛИ проверьте Normal.dot: по меню Debug \ Compile Normal - будут ли ошибки?
3. ИЛИ переименуйте процедуру - сделайте с циферкой _3 на конце вместо _2 и поместите ее в модуль обрабатываемого файла. Закройте полностью Word, откройте файл с этой процедурой и запустите.
4. ИЛИ тогда не знаю что еще предложить...


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНу, не знаю... У меня всё катит. Начинаю фантазировать "мозговым штурмом":
1. Уберите этот Trim нафиг, т.е. напишите просто: tbl.Cell(i, 2).Range.Text = arr(0) & sep
2. ИЛИ проверьте Normal.dot: по меню Debug \ Compile Normal - будут ли ошибки?
3. ИЛИ переименуйте процедуру - сделайте с циферкой _3 на конце вместо _2 и поместите ее в модуль обрабатываемого файла. Закройте полностью Word, откройте файл с этой процедурой и запустите.
4. ИЛИ тогда не знаю что еще предложить...

Автор - Gustav
Дата добавления - 30.11.2015 в 19:28
lapin9126 Дата: Понедельник, 30.11.2015, 19:32 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Gustav, Завтра опробую все варианты. У нас ночь, спать пора. По итогам отпишусь.
 
Ответить
СообщениеGustav, Завтра опробую все варианты. У нас ночь, спать пора. По итогам отпишусь.

Автор - lapin9126
Дата добавления - 30.11.2015 в 19:32
lapin9126 Дата: Вторник, 01.12.2015, 03:19 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Работает в таком виде, добавил: On Error Resume Next
[vba]
Код
Sub clearEndOfCell_2()
    Dim arr
    Dim tbl As Table
    Dim i As Integer
    Dim fnd As Find
    Dim sep As String
    Set tbl = ActiveDocument.Tables(1)
            
    For i = 1 To tbl.Rows.Count
    On Error Resume Next
        Set fnd = tbl.Cell(i, 2).Range.Find
            
        With fnd
            .Text = "^34^32<[а-яё]@['а-яё]@>"
            .Replacement.Text = ""
            .MatchWildcards = True
        End With
            
        fnd.Execute
        If fnd.Found Then
            sep = fnd.Parent.Text
            arr = Split(tbl.Cell(i, 2).Range.Text, sep)
            tbl.Cell(i, 2).Range.Text = arr(0) & sep
        End If
    Next i
End Sub
[/vba]


Сообщение отредактировал lapin9126 - Вторник, 01.12.2015, 03:20
 
Ответить
СообщениеРаботает в таком виде, добавил: On Error Resume Next
[vba]
Код
Sub clearEndOfCell_2()
    Dim arr
    Dim tbl As Table
    Dim i As Integer
    Dim fnd As Find
    Dim sep As String
    Set tbl = ActiveDocument.Tables(1)
            
    For i = 1 To tbl.Rows.Count
    On Error Resume Next
        Set fnd = tbl.Cell(i, 2).Range.Find
            
        With fnd
            .Text = "^34^32<[а-яё]@['а-яё]@>"
            .Replacement.Text = ""
            .MatchWildcards = True
        End With
            
        fnd.Execute
        If fnd.Found Then
            sep = fnd.Parent.Text
            arr = Split(tbl.Cell(i, 2).Range.Text, sep)
            tbl.Cell(i, 2).Range.Text = arr(0) & sep
        End If
    Next i
End Sub
[/vba]

Автор - lapin9126
Дата добавления - 01.12.2015 в 03:19
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!