Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2011, 19:18   #1
mrBond007
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 10
По умолчанию как заменить символ в текстовом файле?

Добрый день уважаемый All,

Хелп плиз! Целый день бьюсь ...ничего не получается

Задача заключается в следующем:
необходимо сделать замену одного символа на другой в текстовом файле.

Нашел следующий скрипт, но что-то он не пашет......что не так не могу понять или может подскажете более простой способ ?

Заранее спасибо!!!

Dim FileName, Find, ReplaceWith, FileContents, dFileContents
'Find = Chr(10)
Find = "4"
ReplaceWith = "5"
FileName = "c:\15\txt.txt"

'Read source text file
FileContents = GetFile(FileName)

'replace all string In the source file
dFileContents = Replace(FileContents, Find, ReplaceWith, 1, -1, 1)

'Compare source And result
If dFileContents <> FileContents Then
'write result If different
WriteFile FileName, dFileContents

MsgBox "Replace done."
If Len(ReplaceWith) <> Len(Find) Then 'Can we count n of replacements?
MsgBox ((Len(dFileContents) - Len(FileContents)) / (Len(ReplaceWith) - Len(Find))) & _
" replacements."
End If
Else
MsgBox "Searched string Not In the source file"
End If
End Sub

'Read text file
Function GetFile(FileName)
If FileName <> "" Then
Dim FS, FileStream
Set FS = CreateObject("Scripting.FileSystemO bject")
On Error Resume Next
Set FileStream = FS.OpenTextFile(FileName)
GetFile = FileStream.ReadAll
End If
End Function

'Write string As a text file.
Function WriteFile(FileName, Contents)
Dim OutStream, FS

On Error Resume Next
Set FS = CreateObject("Scripting.FileSystemO bject")
Set OutStream = FS.OpenTextFile(FileName, 2, True)
OutStream.Write Contents
End Function
mrBond007 вне форума Ответить с цитированием
Старый 17.08.2011, 19:31   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
подскажете более простой способ
как же не подсказать...
открываете файл, например Word-ом, жмете Ctrl+H, указываете что на что заменить, жмете "сохранить как".

в отличие от Вашего макроса - это проверенный способ
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.08.2011, 19:51   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Чтож это не проверенный? Я проверил
Работает, и как макрос, и как vbs. Только два пробела из поста убрать.
Когда постите коды, пользуйтесь тэгами!!!
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.08.2011, 20:21   #4
mrBond007
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 10
По умолчанию

спасибо, но все должно быть автоматизировано
mrBond007 вне форума Ответить с цитированием
Старый 17.08.2011, 20:26   #5
mrBond007
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 10
По умолчанию

Hugo121, спасибо. Действительно макрос работает с обычными txt файлами. с моим не работает....ломает его, пока не могу понять почему.
mrBond007 вне форума Ответить с цитированием
Старый 17.08.2011, 20:59   #6
mrBond007
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 10
По умолчанию

нашел решение. проблема была в том, что txt file был в unicode формате.
mrBond007 вне форума Ответить с цитированием
Старый 17.08.2011, 22:08   #7
mrBond007
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 10
По умолчанию

подскажите плиз,

Как найти перенос строки + символы " /"
find = Chr(10) & " /"
- что-то не не хочет искать

Задача состоит в том, чтобы найти перенос строки + " /" и заменить на пробел во всем текстовом файле.
mrBond007 вне форума Ответить с цитированием
Старый 17.08.2011, 22:19   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Find = vbnewline & " /"
проверил в варианте vbs
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.08.2011, 13:26   #9
mrBond007
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 10
По умолчанию

помогло find = Chr(13) & " /" - это все работает , если файл в ANSI

остался последний вопрос, как текстовый файл преобразовать из Unicode в ANSI ?
mrBond007 вне форума Ответить с цитированием
Старый 18.08.2011, 13:31   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как кодом - не знаю, я пересохранял блокнотом или в AkelPad.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в файле заменить один символ на другой? RockGirl Помощь студентам 0 16.05.2011 09:40
Как заменить все символы в текстовом поле на один определённый Memfis1992 Общие вопросы Delphi 3 16.06.2010 15:01
Как в текстовом файле распознать символ перевода строки? mzelenyy Общие вопросы C/C++ 4 12.06.2010 11:30
Как заменить слово в текстовом поле. vladtr SQL, базы данных 2 19.04.2010 09:46
Как можно убрать пробелы в текстовом файле? zzz007 Microsoft Office Excel 1 20.08.2009 23:14