////// OPEN WORD DOCUMENTS FROM DELPHI APP'S //////|||COL|||1

Can anyone tell me how to open a word document using a DDE component ?


Bruno Maia


Comments

  • this is (c) by microsoft, from msdn, try it out:




    unit Unit1;


    interface


    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;


    type

    TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    procedure InsertLines(LineNum : Integer);

    procedure CreateMailMergeDataFile;

    procedure FillRow(Doc : Variant; Row : Integer;

    Text1,Text2,Text3,Text4 : String);

    private

    { Private declarations }

    public

    wrdApp, wrdDoc: Variant;

    { Public declarations }

    end;


    var

    Form1: TForm1;


    implementation


    uses ComObj;


    Const wdAlignParagraphLeft = 0;

    Const wdAlignParagraphCenter = 1;

    Const wdAlignParagraphRight = 2;

    Const wdAlignParagraphJustify = 3;

    Const wdAdjustNone = 0;

    Const wdGray25 = 16;

    Const wdGoToLine = 3;

    Const wdGoToLast = -1;

    Const wdSendToNewDocument = 0;


    {$R *.DFM}


    procedure TForm1.InsertLines(LineNum : Integer);

    var

    iCount : Integer;

    begin

    for iCount := 1 to LineNum do

    wrdApp.Selection.TypeParagraph;

    end;


    procedure TForm1.FillRow(Doc : Variant; Row : Integer;

    Text1,Text2,Text3,Text4 : String);

    begin

    Doc.Tables.Item(1).Cell(Row,1).Range.InsertAfter(Text1);

    Doc.Tables.Item(1).Cell(Row,2).Range.InsertAfter(Text2);

    Doc.Tables.Item(1).Cell(Row,3).Range.InsertAfter(Text3);

    Doc.Tables.Item(1).Cell(Row,4).Range.InsertAfter(Text4);

    end;


    procedure TForm1.CreateMailMergeDataFile;

    var

    wrdDataDoc : Variant;

    iCount : Integer;

    begin

    // Create a data source at C:DataDoc.doc containing the field data

    wrdDoc.MailMerge.CreateDataSource('C:DataDoc.doc',,,'FirstName, LastName,' +

    ' Address, CityStateZip');

    // Open the file to insert data

    wrdDataDoc := wrdApp.Documents.Open('C:DataDoc.doc');

    for iCount := 1 to 2 do

    wrdDataDoc.Tables.Item(1).Rows.Add;

    // Fill in the data

    FillRow(wrdDataDoc, 2, 'Steve', 'DeBroux',

    '4567 Main Street', 'Buffalo, NY 98052');

    FillRow(wrdDataDoc, 3, 'Jan', 'Miksovsky',

    '1234 5th Street', 'Charlotte, NC 98765');

    FillRow(wrdDataDoc, 4, 'Brian', 'Valentine',

    '12348 78th Street Apt. 214', 'Lubbock, TX 25874');

    // Save and close the file

    wrdDataDoc.Save;

    wrdDataDoc.Close(False);

    end;


    procedure TForm1.Button1Click(Sender: TObject);

    var

    StrToAdd : String;

    wrdSelection, wrdMailMerge, wrdMergeFields : Variant;

    begin

    // Create an instance of Word and make it visible

    wrdApp := CreateOleObject('Word.Application');

    wrdApp.Visible := True;

    // Create a new document

    wrdDoc := wrdApp.Documents.Add();

    wrdDoc.Select;


    wrdSelection := wrdApp.Selection;

    wrdMailMerge := wrdDoc.MailMerge;


    // Create MailMerge data file

    CreateMailMergeDataFile;


    // Create a string and insert it into the document

    StrToAdd := 'State University' + Chr(13) +

    'Electrical Engineering Department';

    wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphCenter;

    wrdSelection.TypeText(StrToAdd);


    InsertLines(4);


    // Insert Merge Data

    wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphLeft;

    wrdMergeFields := wrdMailMerge.Fields;

    wrdMergeFields.Add(wrdSelection.Range,'FirstName');

    wrdSelection.TypeText(' ');

    wrdMergeFields.Add(wrdSelection.Range,'LastName');

    wrdSelection.TypeParagraph;

    wrdMergeFields.Add(wrdSelection.Range,'Address');

    wrdSelection.TypeParagraph;

    wrdMergeFields.Add(wrdSelection.Range,'CityStateZip');


    InsertLines(2);


    // Right justify the line and insert a date field with

    // the current date

    wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphRight;

    wrdSelection.InsertDateTime('dddd, MMMM dd, yyyy',False);


    InsertLines(2);


    // Justify the rest of the document

    wrdSelection.ParagraphFormat.Alignment := wdAlignParagraphJustify;


    wrdSelection.TypeText('Dear ');

    wrdMergeFields.Add(wrdSelection.Range,'FirstName');

    wrdSelection.TypeText(',');

    InsertLines(2);


    // Create a string and insert it into the document

    StrToAdd := 'Thank you for your recent request for next ' +

    'semester's class schedule for the Electrical ' +

    'Engineering Department. Enclosed with this ' +

    'letter is a booklet containing all the classes ' +

    'offered next semester at State University. ' +

    'Several new classes will be offered in the ' +

    'Electrical Engineering Department next semester. ' +

    'These classes are listed below.';

    wrdSelection.TypeText(StrToAdd);


    InsertLines(2);


    // Insert a new table with 9 rows and 4 columns

    wrdDoc.Tables.Add(wrdSelection.Range,9,4);

    wrdDoc.Tables.Item(1).Columns.Item(1).SetWidth(51,wdAdjustNone);

    wrdDoc.Tables.Item(1).Columns.Item(2).SetWidth(170,wdAdjustNone);

    wrdDoc.Tables.Item(1).Columns.Item(3).SetWidth(100,wdAdjustNone);

    wrdDoc.Tables.Item(1).Columns.Item(4).SetWidth(111,wdAdjustNone);

    // Set the shading on the first row to light gray

    wrdDoc.Tables.Item(1).Rows.Item(1).Cells

    .Shading.BackgroundPatternColorIndex := wdGray25;

    // BOLD the first row

    wrdDoc.Tables.Item(1).Rows.Item(1).Range.Bold := True;

    // Center the text in Cell (1,1)

    wrdDoc.Tables.Item(1).Cell(1,1).Range.Paragraphs.Alignment :=

    wdAlignParagraphCenter;


    // Fill each row of the table with data

    FillRow(wrdDoc, 1, 'Class Number', 'Class Name', 'Class Time',

    'Instructor');

    FillRow(wrdDoc, 2, 'EE220', 'Introduction to Electronics II',

    '1:00-2:00 M,W,F', 'Dr. Jensen');

    FillRow(wrdDoc, 3, 'EE230', 'Electromagnetic Field Theory I',

    '10:00-11:30 T,T', 'Dr. Crump');

    FillRow(wrdDoc, 4, 'EE300', 'Feedback Control Systems',

    '9:00-10:00 M,W,F', 'Dr. Murdy');

    FillRow(wrdDoc, 5, 'EE325', 'Advanced Digital Design',

    '9:00-10:30 T,T', 'Dr. Alley');

    FillRow(wrdDoc, 6, 'EE350', 'Advanced Communication Systems',

    '9:00-10:30 T,T', 'Dr. Taylor');

    FillRow(wrdDoc, 7, 'EE400', 'Advanced Microwave Theory',

    '1:00-2:30 T,T', 'Dr. Lee');

    FillRow(wrdDoc, 8, 'EE450', 'Plasma Theory',

    '1:00-2:00 M,W,F', 'Dr. Davis');

    FillRow(wrdDoc, 9, 'EE500', 'Principles of VLSI Design',

    '3:00-4:00 M,W,F', 'Dr. Ellison');


    // Go to the end of the document

    wrdApp.Selection.GoTo(wdGotoLine,wdGoToLast);

    InsertLines(2);


    // Create a string and insert it into the document

    StrToAdd := 'For additional information regarding the ' +

    'Department of Electrical Engineering, ' +

    'you can visit our website at ';

    wrdSelection.TypeText(StrToAdd);

    // Insert a hyperlink to the web page

    wrdSelection.Hyperlinks.Add(wrdSelection.Range,'http://www.ee.stateu.tld');

    // Create a string and insert it into the document

    StrToAdd := '. Thank you for your interest in the classes ' +

    'offered in the Department of Electrical ' +

    'Engineering. If you have any other questions, ' +

    'please feel free to give us a call at ' +

    '555-1212.' + Chr(13) + Chr(13) +

    'Sincerely,' + Chr(13) + Chr(13) +

    'Kathryn M. Hinsch' + Chr(13) +

    'Department of Electrical Engineering' + Chr(13);

    wrdSelection.TypeText(StrToAdd);


    // Perform mail merge

    wrdMailMerge.Destination := wdSendToNewDocument;

    wrdMailMerge.Execute(False);


    // Close the original form document

    wrdDoc.Saved := True;

    wrdDoc.Close(False);


    // Notify the user we are done.

    ShowMessage('Mail Merge Complete.');


    // Clean up temp file

    DeleteFile('C:DataDoc.doc');

    end;


    end.







This discussion has been closed.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories