Einzelnen Beitrag anzeigen

uranop

Registriert seit: 19. Jul 2008
Ort: Wolfratshausen
10 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: MS Word 2003 Serienbiref / mailMerge aus xls File

  Alt 5. Sep 2008, 17:21
hallo,

ich kann garnicht sagen wie sehr ich dir fuer den tipp mit dem vba makro danke ... ich habe den wald vor baeumen
nicht mehr gesehen und bin auf das simpelste nicht draufgekommen.

Vielen Vielen dank !!

ich weiss nicht ob ich das hier noch mit dranschieben kann, ich mach einfach mal ...

die erstellung des serienbriefes geht, aber nur teilweise.
in der vorlage sind noch diverse Checkboxen drinne.

diese gilt es ebenfalls noch einzustellen ...

da die makro aufzeichnung beim aendern der werte streikt habe ich das mal anders versucht.
ich habe im netz was gefunden was sich rel simpel durchfuehren laesst

Delphi-Quellcode:

// SerienBrief
procedure TForm4.Image8Click(Sender: TObject);
var
Word : OLEVariant;
wState, wName: OleVariant;
strPfad: string;
begin
wState := OleVariant(flag);
wName := OleVariant(cbName);
 strPfad := ExtractFilePath(ParamStr(0)); //ExtractFilePath(Application.ExeName);
   // Define a string list object, and point our variable at it
          try
             Word:=CreateOleObject('Word.Application');
          except
             ShowMessage('Kann Word nicht starten!');
             Exit;
          end;
          Word.Visible:=false;

       Word.Documents.Open(FileName:=strPfad +'\geraetebuecher\Gerätebuch v8.0.doc', ConfirmConversions:=
        False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:='',
        PasswordTemplate:='', Revert:=False, WritePasswordDocument:='',
        WritePasswordTemplate:='', Format:=wdOpenFormatAuto, XMLTransform:='');

   Word.ActiveDocument.MailMerge.OpenDataSource(Name:=
        strPfad +'\geraetebuecher\' + Edit1.Text +'_HW.xls',
        ConfirmConversions:=False, ReadOnly:=True, LinkToSource:=True,
        AddToRecentFiles:=False, PasswordDocument:='', PasswordTemplate:='',
        WritePasswordDocument:='', WritePasswordTemplate:='', Revert:=False,
        Format:=wdOpenFormatAuto, Connection:='Provider=Microsoft.Jet.OLEDB.4.0;Password='''
        , SQLStatement:='SELECT * FROM `'+ Edit1.Text +'$`', SQLStatement1:='', SubType:=
        wdMergeSubTypeAccess);

    Word.ActiveDocument.MailMerge.Execute(Pause:= True) ;

    // Peripherie
    if Checkbox1.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox1).CheckBox.Value := TRUE;
    if Checkbox4.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox2).CheckBox.Value := TRUE;
    if Checkbox5.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox3).CheckBox.Value := TRUE;
    if Checkbox6.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox4).CheckBox.Value := TRUE;
    if Checkbox7.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox5).CheckBox.Value := TRUE;
    if Checkbox8.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox6).CheckBox.Value := TRUE;
    if Checkbox9.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox7).CheckBox.Value := TRUE;
    if Checkbox10.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox8).CheckBox.Value := TRUE;

    // Reguliertes codex Umfeld
    if Checkbox11.Checked = TRUE then Word.ActiveDocument.FormFields.Item(CheckBox9).CheckBox.Value := TRUE;
    if Checkbox1.Checked = FALSE then Word.ActiveDocument.FormFields.Item(CheckBox10).CheckBox.Value := TRUE;

    // Codex Client
    if ComboBox5.Text = 'JA'  then Word.ActiveDocument.FormFields.Item(CheckBox11).CheckBox.Value := TRUE;
    if ComboBox5.Text = 'NEIN'  then Word.ActiveDocument.FormFields.Item(CheckBox12).CheckBox.Value := TRUE;

    Word.ActiveDocument.SaveAs(FileName:= strPfad + 'geraetebuecher\GB_temp_'+ Edit1.Text +'.doc', FileFormat:=wdFormatDocument,
        LockComments:=False, Password:='', AddToRecentFiles:=True, WritePassword
       :='', ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False,
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=
       False );

    Word.Documents.Close(False, EmptyParam, EmptyParam);
    Word.Quit; //Beendet Excel


    Image9.Visible := TRUE;


end;
tjahaa folgendes problem nun ...
der compiler meint nun , dass flag und cbName nicht deklariert waeren ...
bin ich doof oder was, das habe ich doch schon im vorfeld getan ...

etwas ratlos bin momentan


EDIT //
gelöst
if Checkbox10.Checked = TRUE then Word.ActiveDocument.FormFields.Item('CheckBox8').C heckBox.Value := TRUE;

langt vollkommen und alles passt
  Mit Zitat antworten Zitat