Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> макрос doc 2 txt, Макрос сохранения документа в текст 
:(
    Опции темы
rudolfninja
Дата 8.5.2015, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Приветствую всех.
MS Word умеет сохранять текстовый документ как PlainText, т.е. на выходе получается обычный текстовый документ с расширением .txt.
Мне нужен макрос, который будет сам сохранять открытый документ в txt с кодировкой по умолчанию, то есть, чтоб пользователь вообще ничего не делал. Запустил макрос из коммандной строки и получил на выходе текстовый файл, например, в корне диска C.
Чисто теоретически, макрос должен быть не сильно сложный.

Нашел в инетренете такой код:
Код

Sub WordtoTxtwLB()
    '
    ' WordtoTxtwLB Macro
    '
    '
        Dim fileName As String
        myFileName = "New_File"

        ActiveDocument.SaveAs2 FileName:= _
            "\\Path\Path\" & myFileName & ".txt", FileFormat:= _
            wdFormatText, LockComments:=False, Password:="", AddToRecentFiles:=True, _
            WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
             SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
            False, Encoding:=1252, InsertLineBreaks:=True, AllowSubstitutions:=False, _
             LineEnding:=wdCRLF, CompatibilityMode:=0
    End Sub

Но при запуске этого макроса предлагается выбрать кодировку, а мне надо установить, чтоб кодировка была по умолчанию.
Идея такова: я пишу программу на C++, в нее надо загрузить odc файл, вытянуть из него текст и дальше его обработать. Но в с++ нет встроенных средств по работе с doc, поэтому я решил посредством MS Word конвертировать doc файл в txt и обрабатывать его. То есть, по сути я в cmd выполняю: 
Код

winword.exe e:\\test.doc /q /n /mMyMacroName

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

В общем, поделитесь, пожалуйста, макросом, который будет все это делать.
Спасибо.
PM MAIL Skype   Вверх
Akina
Дата 8.5.2015, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Начни с того, что убери нахрен все параметры, которым ты присваиваешь значения по умолчанию, оставь только реально необходимые (имхо FileName и FileFormat).

Добавлено через 3 минуты и 5 секунд
PS. Тебе точно нужна кодировка msoEncodingWestern ?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rudolfninja
Дата 8.5.2015, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Убарл все лишнее, получилось:
Код

Sub WordtoTxtwLB()
    Dim fileName As String
    myFileName = "D:\\New_File"
    ActiveDocument.SaveAs2 fileName:=myFileName & ".txt", FileFormat:=wdFormatText
End Sub

Кодировка...а разве кодировка по умолчанию msoEncodingWestern?

Тут у меня еще вопорос возник, как мне потом этот макрос сохранить? Потому что при открытии сохраненного .dotm файла появляется пустой документ. Если у него запустить Visual Basic, то в дереве проекта не видно созданного модуля и его надо снова создавать.
PM MAIL Skype   Вверх
Akina
Дата 8.5.2015, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Цитата(rudolfninja @  8.5.2015,  13:20 Найти цитируемый пост)
Кодировка...а разве кодировка по умолчанию msoEncodingWestern?

Не по умолчанию, а системная (вернее, по умолчанию берётся именно системная - кстати, фиг знает, какая на твоём компе системная). 
Но ты-то в явной форме задаёшь
Код

Encoding:=1252

А это и есть msoEncodingWestern. А msoEncodingCyrillic, коя тебе, вероятно, нужна - это 1251. И окно у тебя появляется скорее всего потому, что кодировки 1252 у тебя в системе тупо нет, для неё идёт substitution - вот Ворд тебя и спрашивает, чё с этим делать.

Цитата(rudolfninja @  8.5.2015,  13:20 Найти цитируемый пост)
как мне потом этот макрос сохранить?

Да сохранить этот макрос в Normal.dot, а не в документе. И он будет тебе доступен из любого документа на этом компе (при условии, что нет дублирования имён, само собой).

Цитата(rudolfninja @  8.5.2015,  13:20 Найти цитируемый пост)
 при открытии сохраненного .dotm файла 

А почему ты его сохраняешь в таком формате-то?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rudolfninja
Дата 8.5.2015, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Про кодировку понял, спасибо.
Цитата(Akina @  8.5.2015,  12:26 Найти цитируемый пост)
Да сохранить этот макрос в Normal.dot, а не в документе.

Не вариант, мне надо, чтоб макрос лежал рядом с исполняемым файлом моей программы и я мог запустить его на любом компе, поэтому надо сохранить его отдельно.
Цитата(Akina @  8.5.2015,  12:26 Найти цитируемый пост)
А почему ты его сохраняешь в таком формате-то? 

Ну как по-умолчанию Word предложил, я так и сохранил.
Возможно, я вообще неправильно макрос создаю:
В Word'е выбрал New-My templates-Blank Document (предварительно указав, что blank type = template).

PM MAIL Skype   Вверх
Akina
Дата 8.5.2015, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Цитата(rudolfninja @  8.5.2015,  13:32 Найти цитируемый пост)
мне надо, чтоб макрос лежал рядом с исполняемым файлом моей программы и я мог запустить его на любом компе, поэтому надо сохранить его отдельно.

Тогда сохраняй его непосредственно в этом документе (и сохраняй сам документ в .DOCM). Он будет доступен в этом документе и всех его копиях.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rudolfninja
Дата 8.5.2015, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



То есть, я не смогу открыть любой документ на любой машине и с помощью своего сохраненного макроса сохранить этот документ как текст?
PM MAIL Skype   Вверх
Akina
Дата 8.5.2015, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Цитата(rudolfninja @  8.5.2015,  13:47 Найти цитируемый пост)
помощью своего сохраненного макроса 

Сохранённого ГДЕ? Его ветром не надует, он должен на целевой станции присутствовать, причём в списке активных макросов. А таковые могут взяться только из двух мест - из самого файла и из локального файла шаблонов. Есть, конечно, и третий вариант - размещение файла с макросом в доступном месте и подключение его к конечному файлу как шаблон (т.е. в файле будет не сам макрос, а ссылка на него)... но при его недоступности будут проблемы.

Цитата(rudolfninja @  8.5.2015,  13:47 Найти цитируемый пост)
любой документ 

А вот в этом случае у тебя вариантов вообще нет - только  локальный normal.dot. Распространяй макрос в общие шаблоны по всем нужным станциям.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rudolfninja
Дата 8.5.2015, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Ясно, спасибо. Тему можно закрывать.
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.1729 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.