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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 15:47   #1
Сотников Роман
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 11
По умолчанию Помогите с написанием макроса для Word,который преобразует кодировку текста из указанной в указанную

задали такое задание,я сделал так:
Sub Kodirovka()
'
' Kodirovka Макрос
'
'
ChangeFileOpenDirectory "C:\Documents and Settings\Admin\Рабочий стол\"
ActiveDocument.SaveAs FileName:="kodirovka.txt", FileFormat:=wdFormatText, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, Encoding:=1251, InsertLineBreaks:=False, AllowSubstitutions:=False _
, LineEnding:=wdCRLF
ActiveDocument.Close
Documents.Open FileName:="kodirovka.txt", ConfirmConversions:=False, _
ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
Encoding:=874
ActiveDocument.SaveAs FileName:="kodirovka.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End Sub
Преподаватель сказал что это неправильно и нужно сделать с помощью цикла по всем символам в документе,который меняет символы одной кодировки на другую.Как сделать это даже не представляю(в универе изучаем C++),помогите кто может.
Сотников Роман вне форума Ответить с цитированием
Старый 30.05.2009, 16:04   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Сохранить файл в нужном формате достаточно просто:

Код:
Sub Kodirovka()
    ПутьКФайлу = "C:\Documents and Settings\Игорь\Рабочий стол\тест.doc"

    Dim Формат1 As WdOpenFormat: Формат1 = wdOpenFormatAuto
    Documents.Open ПутьКФайлу, , , , , , , , , Формат1

    Dim Формат2 As WdSaveFormat: Формат2 = wdFormatUnicodeText
    ActiveDocument.SaveAs ПутьКФайлу & ".new.doc", Формат2
End Sub
Кодировку сменить - тоже не проблема:
ActiveDocument.TextEncoding = msoEncodingArabic

А вот как должен выглядеть текст после смены кодировки в цикле, я не представляю...
EducatedFool вне форума Ответить с цитированием
Старый 30.05.2009, 16:33   #3
Сотников Роман
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 11
По умолчанию

вот что он мне написал "чтобы помочь":
цикл по всем символам документа и замена,нечто вроде с=tbl[c]
tbl-таблица перекодирования
198->244
199->227
200->245

порылся в интернете, нашел вот это:
Функции RusDosWin$ и ULrus$ представляют собой примеры практического применения функции StrChange$. Первая производит преобразование русских символов из кодировки DOS в Windows и наоборот, а вторая — строчных русских символов в прописные, и наоборот. Набор русских символов в кодировке DOS и Windows (константа W$) очень просто получить программным образом:
W$ = "": D$ = ""
For i = 192 To 255: W$ = W$ + Chr$(i): Next
For i = 128 To 175: D$ = D$ + Chr$(i): Next
For i = 224 To 236: D$ = D$ + Chr$(i): Next
Print W$: Print D$
может быть как нибудь с помощью этого?
Сотников Роман вне форума Ответить с цитированием
Старый 30.05.2009, 16:50   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
который преобразует кодировку текста из указанной в указанную
Всё зависит от того, какие кодировки могут быть указаны.
Сколько кодировок должен поддерживать макрос - столько и таблиц перекодировки должно быть.
В принципе, если очень постараться, можно найти в интернете соответствия между кодировками (для одной из кодировок пример у тебя уже есть), и сделать универсальный макрос.

В каком формате даны исходные файлы? (txt или doc)
Аналогичный вопрос по формату выходных файлов (тех, которые получаются в результате обработки)

В случае с текстовыми документами (txt) даже цикл организовывать не нужно - там можно преобразовать кодировку средствами VBA.
EducatedFool вне форума Ответить с цитированием
Старый 30.05.2009, 17:01   #5
Сотников Роман
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 11
По умолчанию

кодировок всего две:из одной в другую(любые).Файл в формате doc.Как я сделал задание-это полностью неправильно.Принцип работы макроса:дается файл(например какие-нибудь каракули(известно в какой они кодировке)), которые раньше были русским текстом.С помощью макроса нужно преобразовать обратно в русский текст.

Последний раз редактировалось Сотников Роман; 30.05.2009 в 17:08.
Сотников Роман вне форума Ответить с цитированием
Старый 30.05.2009, 18:09   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Дайте пример документа, который был русским текстом, но в неправильной кодировке.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 30.05.2009, 18:34   #7
Сотников Роман
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 11
По умолчанию

Текст любой.Задание- сделать макрос который меняет текст из одной кодировки в другую,больше ничего не сказано.
Сотников Роман вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос текста из Excel в Word Aleksandra Microsoft Office Word 3 23.09.2008 08:46
Как создать новый файл Word из макроса Excel? Dorvir Microsoft Office Excel 12 08.07.2008 16:50
подскажите кодировку для казахстана. Sjava HTML и CSS 4 17.07.2007 15:08