Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

Word.   Найти похожие ветки 

 
tormoz   (2004-11-17 21:53) [0]

Здравствуйте! Подскажите, как мне получить доступ ко всем символам документа Word, не трогая картинки и формулы (через WordApplication и OleConteiner).


 
palva ©   (2004-11-17 22:29) [1]

Используйте коллекцию
Application.Document.Characters


 
tormoz   (2004-11-18 00:42) [2]

А можно небольшой пример, например доступ к 5 символу 6 слова 3 строки? Для wordapplication и OleConteiner.


 
GanibalLector ©   (2004-11-18 02:11) [3]

А не проще закладку поставить на  5 символе 6 слова 3 строки???А потом крути,верти


 
YurikGL ©   (2004-11-18 07:25) [4]

>А можно небольшой пример, например доступ к 5 символу 6 слова 3
> строки? Для wordapplication и OleConteiner.

Если я не ошибаюсь, то нельзя получить доступ к строкам.

Можно к буквам, славам, абзацам...

WordApplication1.ActiveDocument.Characters
WordApplication1.ActiveDocument.Words
WordApplication1.ActiveDocument.Paragraphs


 
palva ©   (2004-11-18 11:25) [5]

tormoz   (18.11.04 00:42) [2]
> А можно небольшой пример, например доступ к 5 символу 6 слова 3 строки?

Если вы знаете номер символа (первый символ имеет индекс 1), то можете использовать Characters
ActiveDocument.Characters(3) = "*";
Если вам надо путешествовать по документу, то пользуйтесь методами Move..., как в следующем примере. Посмотрите подробности в справке по WordBasic.

YurikGL ©   (18.11.04 07:25) [4]
> Если я не ошибаюсь, то нельзя получить доступ к строкам.

По моим наблюдениям можно, только надо сделать документ видимым, чтобы параграф разделился на строки по границам окна. Либо можно использовать мягкие переносы внутри параграфа. Иначе параграф будет состоять из одной строки. Вот пример для задачи от tormoz:

{$APPTYPE CONSOLE}
uses
 Variants, {Unassigned}
 ActiveX,  {CoInitialize, CoUninitialize}
 ComObj;   {CreateOleObject}
var
 WordApp: Variant;
begin
 CoInitialize(Nil);
 WordApp := CreateOleObject("Word.Application");
 WordApp.Visible := True;
 WordApp.Documents.Add("D:\C\pascal\ole.doc");
 WordApp.Selection.MoveDown(5, 2);
 WordApp.Selection.MoveRight(2, 5);
 WordApp.Selection.MoveRight(1, 4);
 WordApp.Selection.MoveRight(1, 1, True);
 WordApp.Selection.Text := "*";
 WordApp.ActiveDocument.SaveAs("D:\C\pascal\ole.doc");
 WordApp.Quit;
 WordApp := Unassigned;
 CoUninitialize;
end.


 
YurikGL ©   (2004-11-18 11:45) [6]

palva ©   (18.11.04 11:25) [5]

Если через move то, конечно, можно... но коряво как-то. ИМХО все же лучше пользоваться закладками.


 
palva ©   (2004-11-18 13:45) [7]

> лучше пользоваться закладками

Согласен. Создают шаблон с закладками, а потом создают документ на основе этого шаблона и заполняют нужные поля. Но tormoz, возможно, хочет чего-то другого. Он не объясняет.


 
tormoz   (2004-11-18 17:59) [8]


> palva ©   (18.11.04 13:45) [7]


Мне надо не заполнять, а изменять заранее известные символы (известны их позиции), и еще иметь возможность искать символы и заменять их на другие (некое подобие Правка->Заменить в Word)


 
palva ©   (2004-11-18 18:26) [9]

Если нужно изменять отдельные символы, (т. е. не будет вставки вместо одного символа трех и т. д.) тогда ведь у каждого такого символа должен быть один и тот же номер (считая от начала файла). Если этот номер меняться не будет, то можно без хлопот использовать Characters. Если же документ "плывет", что-то будет вставляться и удаляться, то проще эти символы еще на этапе создания файла предварить закладкой с нужным именем. Закладки можно в принципе создавать из Delphi тоже. С поиском связываться не советую. Он предназначен для других целей, его использование вместо закладок ненадежно. Мало ли кто вставит что-нибудь в файл, и ваш поиск будет останавливаться не в том месте.


 
YurikGL ©   (2004-11-19 07:21) [10]

> и еще иметь возможность искать символы и заменять их на другие
>(некое подобие Правка->Заменить в Word)

А в макросе посмотреть и сделать не подобие и выполнить эту команду?

Sub Макрос1()
"
" Макрос1 Макрос
" Макрос записан 19.11.2004 YurikGL
"
   Selection.Find.ClearFormatting
   Selection.Find.Replacement.ClearFormatting
   With Selection.Find
       .Text = "a"
       .Replacement.Text = "b"
       .Forward = True
       .Wrap = wdFindContinue
       .Format = False
       .MatchCase = False
       .MatchWholeWord = False
       .MatchWildcards = False
       .MatchSoundsLike = False
       .MatchAllWordForms = False
   End With
   Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Sub Макрос1()
"



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
1-1100683669
OlegM
2004-11-17 12:27
2004.12.05
Как после вставки таблиыцы в ворде выйти из таблицы


3-1099983334
SDA
2004-11-09 09:55
2004.12.05
Что такое методы асинхронного коннекта???


1-1101052041
lamerokvdelphi
2004-11-21 18:47
2004.12.05
Для чего нужен Sleep?


1-1101281831
Tria
2004-11-24 10:37
2004.12.05
Проблема с mdi окнами.


1-1100966872
лена19
2004-11-20 19:07
2004.12.05
действительные типы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский