Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837

Поиск в документе word через vba значения после и запись в значения в переменную

21.10.2019, 22:35. Показов 5293. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Подскажите пожалуйста, как мне посредством vba сделать поиск в word по значению после указанного "^LT-" в коде?

Visual Basic
1
2
3
4
5
6
7
8
9
Application.ScreenUpdating = False
    Set objDoc98 = objWord.Documents.Open("\\d\источник\text.txt")
    objWord.Visible = True
    objWord.Activate
    objWord.ActiveWindow.View.ReadingLayout = False
    With objWord.Selection
            .Find.Text = "^LT-"
            .Wrap = wdFindStop
                If .Found = True Then ...
Код начал писать, не знаю как продолжить)

Прикладываю текстовый файл, в котором делается поиск. Мне нужно копировать значение в строке правее найденного текста и записать в переменную для дальнейших действий.
Там, дальше идет числовое значение, оно мне и нужно...

Подскажите пожалуйста , как это можно осуществить? Заранее спасибо!)))
Вложения
Тип файла: txt text.txt (52 байт, 9 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2019, 22:35
Ответы с готовыми решениями:

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

Поиск в документе Word через Find, но с конца документа к его началу
Здравствуйте, как организовть поиск в документе Ворд Финдом но с конца документа к его началу Добавлено через 3 часа 32 минуты вроде...

Передача значения из VBA в переменную в консольное приложение на С#
Доброго времени суток, уважаемые программисты! Есть необходимость передавать строчное значение из ВБА например "путь к...

16
Заблокирован
21.10.2019, 23:14
Dimasterfrom4e, Word использовать принципиально?
Visual Basic
1
2
3
4
5
6
7
8
9
Open "\\d\источник\text.txt" For Input As 1
Dim s$
s = Input$(LOF(1), 1)
Close 1
Dim a$()
a = Split(s, "^LT-")
Dim v As Long
v = Val(a(1))
MsgBox v
1
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
21.10.2019, 23:24  [ТС]
Цитата Сообщение от Остап Бонд Посмотреть сообщение
Word использовать принципиально?
к сожалению да... Этот текстовый файл у нас на работе на принтеры-зебры для печати этикеток отправляется именно через ворд.

Не факт, что если откроют через txt, все правильно пойдет на печать... Лучше не испортить))

Добавлено через 2 минуты
Цитата Сообщение от Остап Бонд Посмотреть сообщение
Open "\\d\источник\text.txt" For Input As 1
Dim s$
s = Input$(LOF(1), 1)
Close 1
Dim a$()
a = Split(s, "^LT-")
Dim v As Long
v = Val(a(1))
MsgBox v
спасибо, но наверно если открывать в ворде, не будет работать?...
0
Заблокирован
21.10.2019, 23:36
Не вижу смысла открывать txt-файл в ворде из за одной переменной.
1
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
21.10.2019, 23:47  [ТС]
Цитата Сообщение от Остап Бонд Посмотреть сообщение
Не вижу смысла открывать txt-файл в ворде из за одной переменной.
Это был пример с одной переменной. В рабочем файле их больше. И каждую нужно взять и записать в переменную, а потом обработать в экселе и перезаписать уже другие значения в этом же файле, открытом в ворде. А потом и печатать именно через ворд.

Смысл открытия в ворде есть, мы не хотим же поломать коллегам настроенные файлы, которые годами работают как надо.
0
Заблокирован
22.10.2019, 09:43
Не разглядел надобности поиска и замены значений в txt-файле через ворд, но хочется раз штаны через голову надевать - держите костыль
Visual Basic
1
2
3
4
5
6
7
8
  Set objDoc98 = objWord.Documents.Open("\\d\источник\text.txt")
  Dim s$
  s = objDoc98.Range.Text
  Dim a$()
  a = Split(s, "^LT-")
  Dim v As Long
  v = Val(a(1))
  MsgBox v
1
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
22.10.2019, 09:55  [ТС]
Цитата Сообщение от Остап Бонд Посмотреть сообщение
Не разглядел надобности поиска и замены значений в txt-файле через ворд
вот поэтому...
Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
Этот текстовый файл у нас на работе на принтеры-зебры для печати этикеток отправляется именно через ворд.
Цитата Сообщение от Остап Бонд Посмотреть сообщение
штаны через голову
спасибо
0
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
22.10.2019, 10:27  [ТС]
Прошу прощения, но тут еще вопрос.

В файле нужен поиск по числам после текста LS. Но их там 5 строк в разных местах файла

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

Цитата Сообщение от Остап Бонд Посмотреть сообщение
Set objDoc98 = objWord.Documents.Open("\\d\источник\tex t.txt")
* Dim s$
* s = objDoc98.Range.Text
* Dim a$()
* a = Split(s, "^LT-")
* Dim v As Long
* v = Val(a(1))
* MsgBox v
Я так понимаю, этот пример тут не подойдет?
Вложения
Тип файла: rar text2.rar (4.4 Кб, 4 просмотров)
0
Заблокирован
22.10.2019, 10:42
Лучший ответ Сообщение было отмечено Dimasterfrom4e как решение

Решение

Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
их там 5 строк в разных местах файла
да хоть 100500
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
  Set objDoc98 = objWord.Documents.Open("\\d\источник\text.txt")
  Dim s$
  s = objDoc98.Range.Text
  Dim a$()
  a = Split(s, "^LS-")
  Dim a_LS&()
  ReDim a_LS(1 To UBound(a))
  Dim i&
  For i = 1 To UBound(a)
    a_LS(i) = Val(a(i))
    MsgBox a_LS(i)
  Next i
1
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
22.10.2019, 10:48  [ТС]
Цитата Сообщение от Остап Бонд Посмотреть сообщение
да хоть 100500
Спасибо!))). А если

Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
записывать каждое найденное значение в свою переменную
Как мне дальше понять какое значение в какую переменную записалось? Мне дальше их обрабатывать нужно))
0
Заблокирован
22.10.2019, 10:53
Лучший ответ Сообщение было отмечено Dimasterfrom4e как решение

Решение

Dimasterfrom4e, м.б. пора про массивы почитать? Например тут - Массивы. Обьявление массивов. Сортировка массивов

Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
какое значение в какую переменную записалось?
Первое значение записано в a_LS(1),..., пятое в a_LS(5).
1
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
22.10.2019, 11:34  [ТС]
Цитата Сообщение от Остап Бонд Посмотреть сообщение
Первое значение записано в a_LS(1),..., пятое в a_LS(5).

Спасибо вам большое!!!

Цитата Сообщение от Остап Бонд Посмотреть сообщение
м.б. пора про массивы почитать?
Согласен. Почитаю обязательно)) Спасибо.

Прошу прощения с ворд через vba excel еще не работал. + обработкой массива в ворд тоже не занимался...

Добавлено через 36 минут
Цитата Сообщение от Остап Бонд Посмотреть сообщение
a = Split(s, "^LS-")
Ой, там в файлах встречаются в самом начале LS с плюсом или минусом... LS+ или LS-. Как их тоже учитывать в коде?
0
Заблокирован
22.10.2019, 11:37
Лучший ответ Сообщение было отмечено Dimasterfrom4e как решение

Решение

Цитата Сообщение от Dimasterfrom4e Посмотреть сообщение
с плюсом или минусом... LS+ или LS-. Как их тоже учитывать в коде?
минус убрать
Visual Basic
1
a = Split(s, "^LS")
1
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
23.10.2019, 15:37  [ТС]
Цитата Сообщение от Остап Бонд Посмотреть сообщение
минус убрать

извиняюсь, тут снова вопрос. После того, как я убрал минус, значения с минусом стали записываться, как "-235", оказывается так и нужно моим коллегам

Я тут узнал, что значения с плюсом пишутся как положительные, например "235", а надо "+235". Как это поправить?
0
Заблокирован
23.10.2019, 16:14
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim a$()
  a = Split(s, "^LS")
  Dim a_LS$() 'a_LS&()
  ReDim a_LS(1 To UBound(a))
  Dim i&
  For i = 1 To UBound(a)
    if  Val(a(i))>=0then
      a_LS(i) ="+" & Val(a(i))
    else
      a_LS(i) = Val(a(i))
    endif
    MsgBox a_LS(i)
  Next i
1
 Аватар для Dimasterfrom4e
9 / 8 / 0
Регистрация: 27.09.2015
Сообщений: 837
26.10.2019, 23:58  [ТС]
Цитата Сообщение от Остап Бонд Посмотреть сообщение
MsgBox a_LS(i)
заключительный вопрос - а как тут можно в отдельную переменную записывать общее количество найденных LS?

Я ищу инф об этом, но возможно ли это добавить в уже существующий код?)
0
Заблокирован
27.10.2019, 00:05
тут можно так -
Visual Basic
1
отдельная_переменная=UBound(a)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2019, 00:05
Помогаю со студенческими работами здесь

Передача значения из формы в макрос VBA Word
Доброго времени суток! Если кто знает - опишите пожалуйста процедуру передачи значения из формы в макрос VBA Word Для примера:...

VBA: выбор пользователем и запись пути сохранения файла через переменную
Пытаюсь реализовать идею: пользователь через стандартный блок выбора папки для сохранения выбирает путь, а переменная в коде записывает...

Поиск в Word через Excel vba
Здравствуйте форумчане. Пишу скрипт, который должен находить совпадения между таблицей в Excel и Word документом ( Например: У меня есть...

Запись значения в переменную из другой формы
Здравствуйте, имеется 2 формы (Form1 и Form2). В первой форме, переменной (name), присваивается значение введенное в TextBox1.Text ...

Запись значения ячейки Exel в переменную
Хочу прочитать значение (целочисленное) в ячейке талицы Exel, чтобы дальше с ним работать в фортаме инт. Пробовала по-разному, битый час...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru