helpf.pro
Регистрация
 +2 
Распечатать

Как в 1C загрузить из Word текст?

Как в 1C из Microsoft Office Word 2007 внести текст?

Код получения текста из файла word:
Код 1C v 8.х
 Wk = Новый COMОбъект("Word.Application"); 
//Покажем открываемый документ
Wk.Visible = Истина; Wk.Documents.Open("D:\file.doc");
Документ = Wk.ActiveDocument();
// перебирая строки выводим текст
Для н = 1 по Документ.Sentences.Count Цикл
Текст=Документ.Sentences(н).Text;
Сообщить(Текст);
КонецЦикла;
Документ.Close();
Wk.Quit();


Рассмотрим приёмы получения статистической информации о документе, его составе и т.д.:
'получить общее количество символов в активном документе
' (буквы, цифры, пробелы, переход на новую строку и т.д)
WordApp.ActiveDocument.Characters.Count

'получить символ по его индексу
WordApp.ActiveDocument.Characters(14).Text
'изменить символ по его индексу
WordApp.ActiveDocument.Characters(14).Text="е" 'можно несколько "еёе"

Только не забывайте, что заменив один символ несколькими, вы измените общее количество символов в документе. Поэтому осторожнее при применении циклов. Это также касается и следующего кода.

'получаем количество слов в документе
'(переход на новую строку считается словом)
DocWord.Words.Count

'получить слово по его индексу
DocWord.Words(2).Text
'изменить слово по его индексу
DocWord.Words(2).Text="текст" 'можно несколько слов "Новый текст"

'получить количество параграфов (абзацев) в документе
WordApp.ActiveDocument.Paragraphs.Count

'получить текст параграфа по его индексу
WordApp.ActiveDocument.Paragraphs(2).Range.Text
'изменить текст параграфа по его индексу
WordApp.ActiveDocument.Paragraphs(2).Range.Text="Много текста. Много " & _
" предложений. И так далее!"

'получить количество предложений в документе
WordApp.ActiveDocument.Sentences.Count

'получить текст предложения по его индексу
WordApp.ActiveDocument.Sentences(1).Text


'получить количество предложений во втором параграфе
WordApp.ActiveDocument.Paragraphs(2).Range.Sentences.Count

'получить текст предложения 1 в параграфе 2
WordApp.ActiveDocument.Paragraphs(2).Range.Sentences(1).Text

'получить текст слова 2, в предложении 1,в параграфе 2
WordApp.ActiveDocument.Paragraphs(2).Range.Sentences(1).Words(2).Text

'добавить новую секцию (раздел)
'создаёт новый раздел на новом листе
DocWord.Sections.Add
'создаёт новый раздел на текущем листе
DocWord.Application.S_election.I_nsertBreak (wdSectionBreakContinuous) '(3)

'получить количество секций в документе
DocWord.Sections.Count

'получить текст слова 2, в предложении 1,в параграфе 2, в секции 1.
DocWord.Sections(1).Range.Paragraphs(1).Range.Sentences(1).Words(2).Text

Используя Встроенные_Свойства_Документа получаем его статистические данные.

'получаем количество страниц (листов) в документе
WordApp.ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) '(14)

'получаем количество строк в документе
WordApp.ActiveDocument.BuiltInDocumentProperties(wdPropertyLines) '(23)

'получаем количество слов в документе
WordApp.ActiveDocument.BuiltInDocumentProperties(wdPropertyWords) '(15)

'получаем количество параграфов (абзацев) в документе
WordApp.ActiveDocument.BuiltInDocumentProperties(wdPropertyParas) '(24)
'и т.д.

Рассмотрим примеры кода для передвижения по документу, а также поиска и замены текста.
Метод .GoTo (перейти к) позволяет вам переместиться на нужную позицию в документе. Он при прямом вызове возвращает новую позицию курсора.

'переход на лист с именем "1"
'если не указать в конце .S_elect, то код просто выдаст положение курсора
DocWord.Application.S_election.GoTo(wdGoToPage, , , "1").S_elect

wdGoToSection (0) - перейти к секции ; wdGoToPage (1) - перейти к листу ;
wdGoToTable (2) - перейти к таблице ; wdGoToLine (3) - перейти к строке ;
wdGoToFootnote (4) - перейти к сноске ; wdGoToEndnote (5) - к примечанию ;
wdGoToComment (6) - к комментарию ; wdGoToField (7) - к полю ;
wdGoToHeading (11) - к заголовку ;
wdGoToSpellingError (13) - к орфографической ошибке ;
wdGoToGrammaticalError (14) - к грамматической ошибке.

'переход на лист с индексом 1
DocWord.Application.S_election.GoTo(3, , 1, "").S_elect

'переход в начало строки с индексом 1
DocWord.Application.S_election.GoTo(3, , 1, "").S_elect

'переход в начало следующей строки (аналогично текущий_индекс+1)
DocWord.Application.S_election.GoTo(3, wdGoToNext, 1, "").S_elect

wdGoToNext (2) - на следующий ; wdGoToPrevious (3) - на предыдущий.

Поиск и замена:
'находим первое вхождение текста и выделяем его
WordApp.Application.S_election.Find.Text = "строка"
WordApp.Application.S_election.Find.Execute

'находим первое вхождение текста
WordApp.Application.S_election.Find.Text = "строка"
' и заменяем только его
WordApp.Application.S_election.Find.Replacement.Text = "1 строчка"
WordApp.Application.S_election.Find.Wrap = wdFindContinue
WordApp.Application.S_election.Find.Execute Replace:= wdReplaceOne '(1)

'или тоже самое, но другим способом (при повторном выполнении кода, заменится следующее слово)
WordApp.ActiveDocument.Content.Find.Execute _
FindText:="текста", ReplaceWith:="hello", Replace:= wdReplaceOne '(1)

Для замены всех вхождений текста применяйте wdReplaceAll (2).
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 15714
 +2 
Распечатать
Возможно, вас также заинтересует
Вывод несколько раз макета ActiveDocument в один документ Word 0
Текст кода для вывода шаблона несколько раз в один документ Ворд. Случилось, что понадобилось вывести шаблон справки к продукции для каждой строки ТЧ товары документа. Создаем макет печ. формы с типом ActiveDocument и...
Выгрузка метаданных конфигурации в Microsoft Word и Excel 0
Перем ОбъектыКонфы; Перем СтруктКонфы; Процедура ВыгрузитьВWord() Попытка Word = Новый COMОбъект(" Word.Application" ); Исключение Сообщить(" Не удалось открыть Word" ); Возврат; КонецПопытки; Word.Documents.Add(); Документ = Word.Activ
Запуск макроса в MS Word из 1С 0
//Пример показывает как из 1С вызывается MS Word, вставляется макрос и запускается! //Макрос пишет на листе Добрый день!, http://helpf.pro и сохраняет файл в D:/primer.doc ПримерМакроса = " Sub VBAprimer() |S_election.TypeText Text:=" " Добрый д
Как защитить паролем создаваемый Word документ 0
МакетНаименование=" WodrFile" ; ИмяФайла = " t" + МакетНаименование + " .tmp" ; ОбъектВорд = Новый COMObject(" Word.Application" ); ОбъектВорд.Documents.Add(ИмяФайла,,, Истина); ОбъектВорд.ActiveWindow.Caption = МакетНаименование; ОбъектВорд.V
Как открыть документ Word без возможности редактирования и копирования 0
Как открыть из 1С документ Word без возможности его редактирования и копирования? Если НЕ РольДоступна(" ПолныеПрава" ) Тогда Word.Application.ActiveDocument.Protect(2,ИСТИНА,Строка(Код),Ложь,ИСТИНА);//пароль на редактрование - код текущего...
Посмотреть все результаты поиска похожих
Комментарии
Vl
19.09.2013 11:02Комментарий: 3
Vl
Скажите, как получить текст на который указывает ссылка с определенным индексом ?
Sergeevich
24.07.2012 14:58Комментарий: 2
Sergeevich
Еще один метод:

Код 1C v 8.2 УП
 // Открываем документ
Документ = ПолучитьCOMОбъект(ФайлДляОбработки);

// перебирая строки выводим текст
Для н = 1 по Документ.Sentences.Count Цикл
Текст=Документ.Sentences(н).Text;
Сообщить(Текст);
КонецЦикла;

Документ.Close();
Документ = "";
ab
27.02.2011 15:47Комментарий: 1
ab
Кпировать (Ctrl + C) и Вставить (Ctrl+V)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.