Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] замена текста в файле по шаблону

Ответить
Настройки темы
VBS/WSH/JS - [решено] замена текста в файле по шаблону

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


День добрый, форумчане.

помогите разобраться, есть задача, нет опыта))

Есть целевой файл-простой текстовик , есть исходный файл-таблица эксель с данными в двух колонках.

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

Вот что я наваял. При открытии пишет что файл бинарный и показывает в нем набор символов. Что не так?

Код: Выделить весь код
Const ForReading    = 1 
Const ForWriting    = 2 
  
Set oXL = CreateObject("Excel.Application") 
Set oXLSource = CreateObject("Excel.Application")
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("w:\VB\connections_4.txt", ForReading) 
Set objFile2 = objFSO.OpenTextFile("c:\connections_4.txt", ForWriting)
 
 oXLSource.Visible = False
 Set oWBSource = oXLSource.Workbooks.Open("w:\VB\2.xls", ForReading) 
 Set oSheetSource = oWBSource.Worksheets(1)
 
 Buffer = objFile.ReadAll
 
  
  For i = 1 To 50
        d_number=oSheetSource.Cells(i,1).value
        d_name=oSheetSource.Cells(i,2).value
        Buffer = Replace(Buffer, d_number, d_name, 1, -1, 1)
  Next  
 objFile2.Write Buffer
 objFile2.Close
 objFile.Close

 oWBSource.Close
 Set oSheetSource = Nothing
 Set oWBSource = Nothing
 oXLSource.Quit 
 Set oXLSource = Nothing

Отправлено: 12:21, 29-06-2011

 

Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
fXLS = "H:\Delete\ggg.xls"              ' Где Excel-файл
fTxt1 = "H:\Delete\Целевой файл.txt"    ' Где Исходный текстовый файл
fTxt2 = "H:\Delete\Результат.txt"       ' Где Результат

Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.OpenTextFile(fTxt1, 1)
S = F.ReadAll
F.Close

Range1 = "A1"           ' В какой клетке первое данное

Set XL = CreateObject("Excel.Application")
XL.Visible = True
XL.Workbooks.Open fXLS

i = 0
Do While True
    Txt1 = XL.Range("A1").Offset(i, 0)
    If Txt1 = "" Then Exit Do
    Txt2 = XL.Range("A1").Offset(i, 1)
    S = Replace(S, CStr(Txt1), CStr(Txt2))
'    MsgBox CStr(Txt1) + "   " + CStr(Txt2)
    i = i + 1
Loop
' XL.ActiveWorkbook.Save
XL.Quit

Set F = FSO.CreateTextFile(fTxt2, True)
F.Write S
F.Close

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:54, 29-06-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Безымянный.JPG
(18.4 Kb, 20 просмотров)

Спасибо за ответ, но у меня до 66561 знака идут квадратики... что это? в моем примере тоже самое. скрин прилагается.

Отправлено: 15:01, 29-06-2011 | #3


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xls User+PC.xls
(57.5 Kb, 14 просмотров)
Тип файла: rar connections_4.rar
(5.5 Kb, 14 просмотров)

да, Ваш пример работает. прикреплю мое творчество, а то ведь больше спросить не у кого(

Отправлено: 11:08, 30-06-2011 | #4


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


квадратики от того что, кодировка utf-16 и файлы не txt, а xml

если сменить кодировку на ANSI, то работает

Последний раз редактировалось ferget, 26-08-2011 в 02:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:42, 30-06-2011 | #5


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Премного благодарен! Куда плюсик ставить?)

Отправлено: 13:37, 30-06-2011 | #6


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


здравствуйте, тоже появилась необходимость сделать замену в текстовом файле заменить одни значения другими при этом это значение не целая строчка, а просто текст в произвольном месте, кроме замененного текста, все остальное должно остаться...значений около 300, попробовал вбить в excel макросы выше, ругается на синтаксис, прямо с первой строчки fXLS = "H:\Delete\ggg.xls" подскажите пожалуйста, как решить проблему? значение имени файла подставлял свои, кириллицу и пробелы не использовал

Последний раз редактировалось 4EJLO6PEK, 29-12-2013 в 02:03.


Отправлено: 01:53, 29-12-2013 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


4EJLO6PEK, для начала выложите Ваши файлы и укажите что, чем и как менять.

Отправлено: 01:57, 29-12-2013 | #8


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


текстовый файл вида
читать дальше »
004 AX AA C 00:00:21:22 00:00:32:21 00:00:04:16 00:00:15:15
* FROM CLIP NAME: MVI_6763.MOV

005 AX V C 00:00:23:12 00:00:28:21 00:00:15:15 00:00:20:24
* FROM CLIP NAME: MVI_6776.MOV

006 AX AA C 00:00:23:12 00:00:28:21 00:00:15:15 00:00:20:24
* FROM CLIP NAME: MVI_6776.MOV

007 AX AA/V C 00:00:41:04 00:00:45:23 00:00:20:24 00:00:25:18
* FROM CLIP NAME: MVI_6767.MOV

008 AX V C 00:00:45:23 00:00:46:03 00:00:25:18 00:00:25:23
* FROM CLIP NAME: MVI_6767.MOV

009 AX AA/V C 00:00:41:04 00:00:45:23 00:00:20:24 00:00:25:18
* FROM CLIP NAME: MVI_6767.MOV

010 AX V C 00:00:45:23 00:00:46:03 00:00:25:18 00:00:25:23
* FROM CLIP NAME: MVI_6767.MOV

011 AX V C 00:01:29:10 00:01:35:11 00:00:25:23 00:00:31:24
* FROM CLIP NAME: MVI_6765.MOV

012 AX AA C 00:01:29:10 00:01:35:11 00:00:25:23 00:00:31:24
* FROM CLIP NAME: MVI_6765.MOV

013 AX V C 00:01:14:23 00:01:18:18 00:00:31:24 00:00:35:19
* FROM CLIP NAME: MVI_6769.MOV

это из экспорта видео монтажа, а мне надо все MVI_????.MOV заменить на соответствующие им другие названия типа ?-?-?.mov
у меня есть эксель файл две колонки
MVI_6763.MOV 1-1-2.mov
MVI_6776.MOV 1-2-4.mov
MVI_6776.MOV 2-1-4.mov
и т.д.

Отправлено: 03:45, 29-12-2013 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Выложить файлы — это означает: упаковать их в архив, и прикрепить последний к сообщению.

Отправлено: 11:50, 29-12-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] замена текста в файле по шаблону

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Поиск и замена текста в файле TERMINAL AutoIt 6 16-03-2011 17:49
CMD/BAT - Как проверить наличие текста в файле mamont1 Скриптовые языки администрирования Windows 6 16-09-2010 16:32
Разное - [решено] FoxPro 2.6 Замена фрагментов текста в txt-файле Pashka Программирование и базы данных 7 18-01-2010 19:20
CMD/BAT - Расположение текста в файле в 2 колонки Serg2010 Скриптовые языки администрирования Windows 6 28-08-2009 18:31
CMD/BAT - [решено] Изменение текста в файле tarasov.evgeny Скриптовые языки администрирования Windows 5 12-08-2009 16:21




 
Переход