Pentru început, există puține puncte comune în lucrul cu MS Office în Delphi. Și primul lucru pe care îl facem este să creați un obiect Word.Application. Acest obiect este creat în același mod ca și obiectul Excel.Application:
utilizează ComObj; var cuvânt: varianta; [. ] procedure CreateWord (const Vizibil: boolean); începeți Word: = CreateOleObject ('Word.Application'); Word.Visible: = Vizibil; se încheie;
Totul este destul de simplu. Apoi, putem lucra cu obiectul după cum urmează:
- Creați un document Word de la zero
- Deschideți un document existent și modificați textul în acesta pentru a obține forma necesară a documentului.
Să luăm în considerare ambele variante, tk. ambele au argumente pro și contra.
1. Creați un document Microsoft Word în Delphi de la zero.
Pentru a crea un document nou, trebuie să rulați metoda de adăugare a colecției Documente, adică:
și după această operațiune începe deja să lucreze cu documentele care se referă la acesta prin index sau numele din colecție. De asemenea, puteți crea un nou document prin șablon (* .dot). Pentru aceasta, trebuie să efectuați aceeași metodă de adăugare, dar cu același parametru de intrare - calea către fișierul șablon:
Sunt de acord cu tine, Nail. Și întotdeauna încerc să reduc costurile inutile la elaborarea programelor. Convinge o persoană poate fi, mai ales atunci când ai mâinile „ubezhdalka“ sub forma unei liste de prețuri :) Dar dacă pot, în sine, program client nu depinde de achiziționarea de software - aproape imposibil de a convinge. Un exemplu simplu este universitatea. Achizițiile universitare Canapeaua sunt centralizate și un singur scaun pe toba ca ceea ce este nevoie - doar în mod regulat donează la fondul universitar un procent fix de venit, și întotdeauna are materie moale și nu în stare proaspătă, este necesar să scaun acest program sau nu - foisted balvanku și du-te Seturi . Departamentul de necesare programm non-standard, de exemplu, generarea de liste de elevi din anumite motive (nu neapărat sexuală) și ar trebui să formeze un document, spune secretarul Departamentului, artiști de predare, etc. că o procesează mai departe, contribuie la ceva, etc. Care credeți că este prima cerință în acest caz? raport în fișierul Word / Excel. Și doar aluzie la Oo - sufocat :).
ZY Pentru link-ul către bibliotecă - mulțumesc imens, pentru că în paralel doar în încercarea lui Lazăr de a face prieteni cu GS - poate o parte din bibliotecă și să vină la îndemână doar
Alimbek Khidzev.
Iată textul macrocomenzii:
[Cod]
Sub Macro1 ()
'
Macro1 Macro
'
'
Cu ListGalleries (wdNumberGallery) .ListTemplates (1) .ListLevels (1)
.NumberFormat = "% 1."
.TrailingCharacter = wdTrailingTab
.NumberStyle = wdListNumberStyleArabic
.NumberPosition = Centimetri Puncte (0,63)
.Aliniere = wdListLevelAlignLeft
.TextPosition = Centimetri Puncte (1.27)
.TabPosition = wdUdefinit
.ResetOnHigher = 0
.StartAt = 1
Cu
.Bold = wdUndefined
.Italic = wdUdefinit
.StrikeThrough = wdUndefined
.Subscript = wdUdefinit
.Superscript = wdUndefined
.Shadow = wdUdefinit
.Schiță = wdUdefinită
.Emboss = wdUfined
.Engrave = wdUdefined
.AllCaps = wdUfined
.Ascuns = wdundefinit
.Subline = wdUdefinit
.Culoare = wdunde
.Dimensiune = wdUdefinită
.Animație = wdUdefinită
.DoubleStrikeThrough = wdUdefinit
.Nume = ""
Sfârșit cu
.LinkedStyle = ""
Sfârșit cu
ListăGalerii (wdNumberGallery) .ListTemplates (1) .Name = ""
Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate: = _
ListăGalerii (wdNumberGallery) .ListTemplates (1), ContinuePreviousList: = _
False, Aplicați la: = wdListApplyToWholeList, DefaultListBehavior: = _
wdWord10ListBehavior
Selection.TypeText Text: = "Poz. 1"
Selection.TypeParagraph
Selection.TypeText Text: = "Poz. 2"
Selection.TypeParagraph
Selection.TypeText Text: = "Poz. 3"
Selection.TypeParagraph
Selection.Range.ListFormat.RemoveNumbersTipul Numar: = wdNumberParagraph
Selection Text.TypeText Text: = "Sfarsitul listei numerotate"
End Sub
[/ code]
Îmi cer scuze pentru întrebarea stupidă, dar cum să numesc această funcție în cod? În sensul că, de exemplu, trebuie să înlocuiesc linii în mai multe locuri, adică trebuie să apel de mai multe ori. În primul rând, fără să observe că nu este o procedură, am crezut că doar o declarație separată de mai multe ori, dar apoi a observat funcția, și nu pot da seama cum să sun, pentru că apelul trebuie să fie după operatorul de atribuire.
Vladislav Bazhenov.Și sună de mai multe ori în cod. Rezultatul funcției este boolean. Dacă înlocuirea textului a avut succes, atunci funcția va reveni la True, altfel False. Dacă nu vă interesează dacă textul este înlocuit sau nu, atunci sunați astfel:
începe
// aici este un cod
FindAndReplace ("Text", "Înlocuire text");
// din nou cu codul dvs.
FindAndReplace ("Text2", "Înlocuire2");
se încheie;
Sau, dacă munca suplimentară depinde de înlocuirea sau nu a textului:
începe
// aici este un cod
dacă FindAndReplace ('Text', 'Replace text'), atunci
FindAndReplace ('Text2', 'Substitution2')
altfel
ShowMessage ("Șirul text" nu a putut fi înlocuit)
se încheie;