MS Word içerisinde kelime düzenleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sako
Üye
Mesajlar: 473
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

MS Word içerisinde kelime düzenleme

Mesaj gönderen sako »

Arkadaşlar merhaba. Yapmak istediğimiz işlem şöyle;
Uzunca bir word dosyası düşünün bu dosya içerisinde bazı cümleler içerisine veri tabanındaki bilgilerden değiştirme ya da ekleme yapmak istiyorum. Örnek olarak aşağıdaki metin varolan bir word dosyasında diyelim. Bunun içerisinde kırmızı yazılı yerleri veri tabanındaki bir alan ile değiştirmek istiyorum. Word dosyasında istediğim ku kelimleri aratıp değiştirmek mümkün müdür? Veya excel deki gibi satır sütun belirterek o kelimeleri değiştirmek mümkün müdür? Nasıl yapabilirim sizce ?

Merhaba,

Delphi ile ilgili bir sorunuz olursa lütfen forum kısmına sorun. E-mail (burayı e-posta olarak değiştirmek istiyorum.)ile sorulan Delphi soruları cevaplandırılmaz! Site yönetimi sürekli forumu takip etmektedir. Ayrıca Foruma sorduğunuz zaman sadece bir kişi değil,(burayı kullanıcı olarak değiştirmek istiyorum.) yüzlerce kişi sorunuzu görüp cevap yazabilir, hem de verilen cevaplardan diğer üyelerde faydalanır.

Foruma üye olma noktasında sıkıntı yaşıyorsanız, Forum Yardım kısmına yazabilir veya bize e-maille (Burayı "e-posta aracılığıyla" olarak değiştirmek istiyorum.)ulaşabilirsiniz.

Gelişen süreçte FORUM kısmı çok daha aktif olduğundan kaynakların birçoğu forum kısmındadır. Sitenin ve forumun offline .CHM yardım dosyası halini de artık forumdan dağıtıyoruz.
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2357
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: MS Word içerisinde kelime düzenleme

Mesaj gönderen freeman35 »

word belgesini değiştirmeyi ben yapmadım, ama internette bulabilrsin. Diğer kısım için de yanılmıyorsam gavurcası "mailmerge" gibi birşey.
Değiiştirmek istediğin kelimeleri belirtmen gerek, bunlarıda tekil gavurcası unique olması gerekir. Misal: "E_Mail" field ın adı olsun, bunu text içine %%E_Mail%% olarak eklersen,
Text:= System.SysUtils.StringReplace(Text, '%%E_Mail%%', QUE.FieldByName('E_Mail').asString, [rfReplaceAll]);
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
sako
Üye
Mesajlar: 473
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: MS Word içerisinde kelime düzenleme

Mesaj gönderen sako »

Hocam gavurcaya gerek kalmadan işimi görebilecek bir şey buldum :) Aşağıdaki kod parçası ile yer işareti oluşturarak istediğim yere istediğim kelimeyi ekleyebilirim. Bunun üzerinden gidiyim şimdilik. Kelime değiştirme işine de bakalım artık.

procedure TForm1.Button1Click(Sender: TObject);
Var
R,
YerimiAdi,
Word,
Doc : OleVariant;
Sayac : Integer;
begin
Word := CreateOleObject('Word.Application');
Word.Documents.Open(ExtractFilePath(Application.ExeName)+'teklif.docx');
Doc := Word.ActiveDocument;
YerimiAdi := 'TeklifSunulacakYer';
if Doc.Bookmarks.Exists( YerimiAdi ) then
begin
R := Doc.Bookmarks.Item(YerimiAdi).Range;
R.InsertAfter( 'Delphi Türkiye Forum' );
R.Font.Color := clBlue;
end;
Word.Visible := True;
Word := UnAssigned;
end;
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 181
Kayıt: 01 Oca 2008 05:34

Re: MS Word içerisinde kelime düzenleme

Mesaj gönderen Commandx »

Boş bir uygulama açın
uygulamayı doc dosyasıyla aynı klasöre koyun, değişmesi gereken E-mail ve E-Posta stringi bulunan bir test dosyası yazıp kaydedin ve uygulamayı çalıştırıp butona basın
word dosyasını açtığınızda E-mail textinin E-posta ile değiştiğini göreceksiniz.
USES COMOBJ eklemeyi unutmayın

Kod: Tümünü seç

uses 
comobj
type
  TWordReplaceFlags = set of (wrfReplaceAll, wrfMatchCase, wrfMatchWildcards);

function Word_StringReplace(ADocument: TFileName; SearchString, ReplaceString: string; Flags: TWordReplaceFlags): Boolean;
const
  wdFindContinue = 1;
  wdReplaceOne = 1;
  wdReplaceAll = 2;
  wdDoNotSaveChanges = 0;
var
  WordApp: OLEVariant;
begin
  Result := False;

  { Check if file exists }
  if not FileExists(ADocument) then
  begin
    ShowMessage('Specified Document not found.');
    Exit;
  end;

  { Create the OLE Object }
  try
    WordApp := CreateOLEObject('Word.Application');
  except
    on E: Exception do
    begin
      E.Message := 'Word is not available.';
      raise;
    end;
  end;

  try
    { Hide Word }
    WordApp.Visible := False;
    { Open the document }
    WordApp.Documents.Open(ADocument);
    { Initialize parameters}
    WordApp.Selection.Find.ClearFormatting;
    WordApp.Selection.Find.Text := SearchString;
    WordApp.Selection.Find.Replacement.Text := ReplaceString;
    WordApp.Selection.Find.Forward := True;
    WordApp.Selection.Find.Wrap := wdFindContinue;
    WordApp.Selection.Find.Format := False;
    WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags;
    WordApp.Selection.Find.MatchWholeWord := False;
    WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags;
    WordApp.Selection.Find.MatchSoundsLike := False;
    WordApp.Selection.Find.MatchAllWordForms := False;
    { Perform the search}
    if wrfReplaceAll in Flags then
      WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
    else
      WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
    { Save word }
    WordApp.ActiveDocument.SaveAs(ADocument);
    { Assume that successful }
    Result := True;
    { Close the document }
    WordApp.ActiveDocument.Close(wdDoNotSaveChanges);
  finally
    { Quit Word }
    WordApp.Quit;
    WordApp := Unassigned;
  end;
end;

//----- kullanımı -------//
BUTONA alttaki kodu yazın

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
Word_StringReplace(ExtractFilePath(Application.ExeName)+'teklif.docx','E-mail ','E-posta',[wrfReplaceAll]);
end;
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Cevapla