AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi MS Word 2003 Serienbiref / mailMerge aus xls File
Thema durchsuchen
Ansicht
Themen-Optionen

MS Word 2003 Serienbiref / mailMerge aus xls File

Ein Thema von uranop · begonnen am 4. Sep 2008 · letzter Beitrag vom 5. Sep 2008
Antwort Antwort
uranop

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

MS Word 2003 Serienbiref / mailMerge aus xls File

  Alt 4. Sep 2008, 20:47
Hi Leute,

folgendesProblem.

Ich habe hier nen Doc, das mit MailMerge Felder kreuzundquer versehen ist.
dieses ding dient als serienbriefVorlage.
als Input wird eine xls datei verwendet.

diese datei ist so aufgebaut, das in der ersten zeile die ganzen namen der mailmerge felder stehen
und in der 2ten die jeweiligen variablen dazu .

ich habe schon einige lösungstips gesehen mit sql varianten etc, diese helfen mir aber nicht.

mein vorhaben ist es,
automatisch im hintergrund die vorlage mit den daten aus dem xls zu bedampfen und unter neuem namen abzuspeichern.

ich komm einfach nicht auf den trichter wie man sowas zustande bringt.
btw ein umstieg auf odbc, sql oder so ist nicht drin, da dies einen validierten vorgang "verletzen" wuerde.

habt ihr zufaellig irgendwo sources dazu rumfliegen, oder vll auch componenten ander hand, die das von sich aus machen ?

vielen dank
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MS Word 2003 Serienbiref / mailMerge aus xls File

  Alt 4. Sep 2008, 21:39
Hallo uranob,

ich gebe zu das ich Deine Frage nicht so ganz verstanden habe. Ich würde sagen, dass ein Programm überflüssig ist.
Wenn Du eine XLS-Datei hast bittet sich doch an mit Excel Word aufzurufen und die Daten in das Word-Formular zu übernehmen.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
uranop

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

Re: MS Word 2003 Serienbiref / mailMerge aus xls File

  Alt 5. Sep 2008, 04:51
richtig ,
das sind die von haus aus eingebundenen funktionen von ms .
da ich aber aufwand minimieren moechte, wuerde ich das dann doch gerne mit in mein prog aufnehmen,
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: MS Word 2003 Serienbiref / mailMerge aus xls File

  Alt 5. Sep 2008, 06:46
Hallo uranop,

man kann über die OLE-Automation oder ADO die Daten aus Excel laden. Welche Methode man wählt hängt zum Teil von der Datenmenge ab. Wenn die Daten in Deinem Programm sichtbar sein sollen könnte man ein StringGrid dafür einsetzen.
Sind die Daten in Deinem Programm geladen, wird Excel geschlossen und anschließend Word mit OLE aufgerufen und die Daten an Word übergeben.
Zweckmäßig ist es wohl sich einen Macro in VBA von Word zu erstellen und anschließend das in Deinem Delphiprogramm nachzubilden.
Ich weise aber darauf hin, dass das bei einem sehr umfangreichen Datenbestand relativ lange dauern kann.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
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, 16: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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

Re: MS Word 2003 Serienbiref / mailMerge aus xls File

  Alt 5. Sep 2008, 17:01
Hallo Uranop,

auf den ersten (und zweiten) Blick gebe ich dem Compiler recht, die beiden scheinen wirklich vom Himmel gefallen zu sein.
Aber wofür benötigst Du sie überhaupt?

Delphi-Quellcode:
var
  Word : OLEVariant;
  wState, wName: OleVariant;
  strPfad : string;
begin
wState := OleVariant(flag);
wName := OleVariant(cbName);
...
im weiteren Code wird nirgendwo mehr darauf zugegriffen. Oder hab ich da was übersehen?

Gruß
K-H

nachtrag:
Wenns jetzt klappt ists OK
aber irgendwie ist das ein Wunder.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: MS Word 2003 Serienbiref / mailMerge aus xls File

  Alt 5. Sep 2008, 17:11
Zitat von uranop:
Delphi-Quellcode:
    if Checkbox1.Checked = TRUE
    if Checkbox4.Checked = TRUE
    if Checkbox5.Checked = TRUE
    if Checkbox6.Checked = TRUE
    if Checkbox7.Checked = TRUE
    if Checkbox8.Checked = TRUE
    if Checkbox9.Checked = TRUE
    if Checkbox10.Checked = TRUE
Bitte nicht!

http://www.delphipraxis.net/internal...ct.php?t=68256
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz