Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 13.07.2019
Сообщений: 24
VBS

Как записать найденную строку из .xml в файл .txt (в идеале в Microsoft Excel)

13.07.2019, 16:52. Показов 5043. Ответов 23
Метки vbs (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток.
Недавно начал учить язык программирования VBS, но быстро при выполнении задачи наткнулся на трудности, которые заключаются в следующем:

Не могу найденную строку в .xml файле записать в новый файл...

Распишу более подробно задачу.
1. Найти строку <C3D>Y</C3D> или <C3D>N</C3D> в файле .xml;
К первому пункту код есть:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
'Объявляем переменные
'Dim — это область видимости переменной
Dim objFSO, result, txtFile, x, FSO               
 
' SET позволяет записать ссылку на какой-либо объект
 
Set objFSO = Createobject("Scripting.FileSystemObject")
 
Set txtFile = objFSO.OpenTextFile("C:\Users\Public\Documents\Angstrem 8\SettingSalon.xml",1)
 
 
'AtEndOfStream — Возвращает значение True, если достигнут конец файла и Fale в противном случае. Работает только если файл открыт для чтения.
 
 
 
Do  While Not txtFile.AtEndOfStream
 
'ReadLine - прочитать строку полностью до конца (до символов перевода строки), т.е. построчное чтение текстового файла
 
   x=txtFile.Readline
 
  If InStr(x, "<C3D>Y</C3D>") Then
 
      MsgBox "<C3D>Y</C3D>"
 
      Exit Do
 
    ElseIf txtFile.AtEndOfStream Then Msgbox "Этих строчек в файле нет"
 
  End If
 
Loop
 
 
 
txtFile.Close
 
 
 
 
 
Set objFSO = Createobject("Scripting.FileSystemObject")
 
Set txtFile = objFSO.OpenTextFile("C:\Users\Public\Documents\Angstrem 8\SettingSalon.xml",1)
 
 
 
Do While Not txtFile.AtEndOfStream
 
 
 
x=txtFile.ReadLine
 
 
 
If InStr (x,"<C3D>N</C3D>") Then
 
                MsgBox "<C3D>N</C3D>"
 
                Exit Do
 
ElseIf txtFile.AtEndOfStream Then MsgBox "Этих строчек в файле нет"
 
End If
 
Loop
 
 
 
txtFile.Close

2. Создать новый файл, желательно Microsoft Excel (если это нельзя сделать то в .txt формате);
3. Записать в новый файл найденную строку;

Подскажите, пожалуйста, как решить данную задачу.
Заранее большое спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.07.2019, 16:52
Ответы с готовыми решениями:

Считать с файла (input.txt) строку, перевернуть строку, записать файл (put.txt) эту строку
Считать с файла (input.txt) строку, перевернуть строку, записать файл (put.txt) эту строку.

Считать с файла (input.txt) строку, заменить в строке латинские буквы на русские, записать файл (input.txt) эту строку
Считать с файла (input.txt) строку, заменить в строке латинские буквы на русские, записать файл (input.txt) эту строку.

Как создать файл TXT и непоказывая его на экране записать в него строку.
Как создать файл TXT и непоказывая его на экране записать в него строку.

23
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
17.07.2019, 10:43
Студворк — интернет-сервис помощи студентам
Расширение в txt можно переименовать.
Впрочем, по картинке видно, что это именно подстрока, т. к. как минимум спереди есть пробельные символы. Поэтому вы опять-таки ошиблись с ТЗ.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
SubStr = "<NameSalon>СПБ 4 Мебель-Холл 1</NameSalon>"
iFile = "C:\Users\Public\Documents\Angstrem 8\SettingSalon.xml"
oFile = "C:\Users\Public\Documents\Angstrem 8\OutPut.csv"
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
With New RegExp
  .IgnoreCase = 1: .Global = 1: .Pattern = "([?*+.^()[\]}{\\\-])"
  .Pattern = "(^|\n)\s*" & .Replace(SubStr, "\$1") & "\s*(\r|$)"
  If .Test(oFSO.OpenTextFile(iFile).ReadAll) Then _
  oFSO.CreateTextFile(oFile, 1).Write SubStr
End With
Добавлено через 16 минут
Цитата Сообщение от Lucky001 Посмотреть сообщение
Архивом передам
Файл имеет всего 2 строки, и весь основной код совмещён во второй. Да ещё и в utf-8 с юниксовским форматом новой строки.
Более того, указанной подстроки в нём нет. Что ищем-то?
0
0 / 0 / 0
Регистрация: 13.07.2019
Сообщений: 24
17.07.2019, 14:14  [ТС]
1. Мы ищем <C3D>Y</C3D> и <NameSalon>СПБ 4 Мебель-Холл 1</NameSalon>.

2. Чтобы я мог вывести данную информацию в отдельный документ.

например, открываю документ, а там написано СПБ 4 Мебель-Холл 1: Y или
<NameSalon>СПБ 4 Мебель-Холл 1</NameSalon> <C3D>Y</C3D>
0
0 / 0 / 0
Регистрация: 13.07.2019
Сообщений: 24
17.07.2019, 14:21  [ТС]
Правильно я Вас понимаю, что <C3D>Y</C3D> является подстрокой?
Миниатюры
Как записать найденную строку из .xml в файл .txt (в идеале в Microsoft Excel)  
0
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,810
17.07.2019, 14:38
1. Между СПБ и 4 в файле 2 пробела.
2. Вы хоть какую строку можете писать после Write:
Visual Basic
1
2
3
4
5
6
7
SubStr = "<NameSalon>СПБ  4 Мебель-Холл 1</NameSalon>"
iFile = "C:\Users\Public\Documents\Angstrem 8\SettingSalon.xml"
oFile = "C:\Users\Public\Documents\Angstrem 8\OutPut.csv"
 
With CreateObject("Scripting.FileSystemObject")
  If InStr(CreateObject("OlePrn.OleCvt").ToUnicode(.OpenTextFile(iFile).ReadAll,65001), SubStr) Then .CreateTextFile(oFile, 1).Write """СПБ 4 Мебель-Холл 1: Y"""
End With
Цитата Сообщение от Lucky001 Посмотреть сообщение
Правильно я Вас понимаю
Вы откройте ваш xml не в IE с авторазметкой, а в текстовом редаторе и увидите весь осн. код одной строкой. Разумеется, это подстрока. А даже если бы и редакторе так было, то всё равно отступы сулили бы о подстроке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2019, 14:38

Не могу записать в файл Excel при Microsoft.Office.Interop.Excel.Application.Visible = False
Коллеги, доброго времени суток. Столкнулся с такой проблемой. Не могу записать в файл, когда установлена невидимость Excel. Далее...

Из файла excel получить столбец и записать в xml/txt после каждого определенного слова
В общем нужно достать из excel один столбец с названием stolb, и каждое последующие значение записывать последовательно в файл xml после...

Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в файл c.txt нечетные
Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в файл c.txt нечетные.

Надо записать в текстовый файл log.txt строку
Добрый день! Делаю на простом аспе. У меня на локале все работает, на серваке не все. Т.е. Надо записать в текстовый файл...

Прочитать xml файл и записать его в строку
Добрый день, Мне необходимо сделать парсер валют с ЦБР, я сделал что бы он переходил по ссылке скачивал информацию xml и записывал...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru