PDA

Vollständige Version anzeigen : Template-File


dannimausi
06.11.2001, 06:34
Hallo!

Ich hab ein Problem mit dem exportieren von Berichten. Ich möchte etliche Berichte meiner Datenbank nach Word, sprich rtf, exportieren, damit die User sie da noch bearbeiten können. Bei rtf werden aber Bilder, z.B. das Firmenlogo nicht mitexportiert. Da man eine Template-File nur für HTML angeben kann fällt diese Möglichkeit auch aus.
Kann ich irgendwas machen in der Art: Öffne Word mit einer bestimmten Template-File und dann Copy-Paste?? Wie???

Gruss,
Danni

peppi
07.11.2001, 10:23
Hallo,

Frage: Warum willst Du einen Bericht exportieren? Warum exportierst Du nicht nur die Daten nach Word. Hier kannst Du eine Dokumentvorlage, die mit Textmarken versehen ist, ansprechen und die Daten an diese Stellen "schaufeln". Hat den Vorteil, daß alle Logos etc. in Word enthalten sind und der/die User Änderungen vornehmen kann/können.

dannimausi
07.11.2001, 10:29
Hm, gute Idee!

Kannst du mir vielleicht noch sagen, wie ich das machen kann. Davon hab ich keine Ahnung... leider.

Danke!

Gruss,
Danni

peppi
07.11.2001, 18:13
Hallo,

ok, melde mich im Laufe des Abends wieder.

dannimausi
08.11.2001, 06:45
Hallo Peppi!

Wäre echt super wenn du mir da helfen könntest!

Danke!!!

Gruss,
Danni

peppi
08.11.2001, 08:18
Hallo,

sorry, hab's gestern abend nicht mehr geschafft. Um 9:00 Uhr stand plötzlich Besuch vor der Tür, der erst nach Mitternacht wieder gegangen ist - und da hatte ich es dann schlichtweg vergessen.

Hole es aber jetzt dann im Laufe des vormittags nach.

Du kannst aber schon mal "Vorarbeit" leisten:
Eine Dokumentvorlage in Word erstellen und an die Stellen, an die die Daten aus Access kommen sollen, Textmarken einfügen.

Die Dokumentvorlage muß in dem Ordner gespeichert werden, der bei Access unter Optionen als Standardordner eingetragen ist.

Den Code, um die Daten aus Access nach Word zu "schaufeln" schicke ich dann.

peppi
08.11.2001, 09:11
Hallo,

hier kommt der Code, den Du an das Ereignis "Beim Klicken" an eine Schaltfläche binden mußt, um die Daten nach Word in die vorbereitete Dokumentvorlage zu bringen (siehe meinen vorhergehenden Beitrag hierzu):

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> ButtonName_btn_Click()
<span class="TOKEN">On Error GoTo</span> ErrWinWord
<span class="TOKEN">Dim</span> objWordApp <span class="TOKEN">As</span> Object <span class="REM">'Verweis auf Microsoft Word</span>
<span class="TOKEN">Dim</span> Bereich <span class="TOKEN">As</span> Object <span class="REM">'Verweis auf Bereich innerhalb des Dokuments (z.B. eine Textmarke)</span>
<span class="TOKEN">Dim</span> strVorlage <span class="TOKEN">As</span> <span class="TOKEN">String</span>
&nbsp;
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> IstWordGestartet <span class="TOKEN">Then</span>
DoCmd.Hourglass <span class="TOKEN">True</span>
<span class="TOKEN">Set</span> objWordApp = CreateObject(&quot;Word.Application&quot ) <span class="REM">'Winword starten</span>
DoCmd.Hourglass <span class="TOKEN">False</span>
<span class="TOKEN">Else</span>
<span class="TOKEN">Set</span> objWordApp = GetObject(, &quot;Word.Application&quot ) <span class="REM">'Winword war schon gestartet</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
&nbsp;
objWordApp.Visible = <span class="TOKEN">True</span>
<span class="REM"> 'neues Dokument basiert auf Vorlage öffnen</span>
strVorlage = CurDir &amp; &quot;\NameDokVorlage.dot&quot;
objWordApp.Documents.Add Template:=strVorlage
&nbsp;
<span class="REM"> 'zu Textmarke springen und Namen einfügen</span>
<span class="TOKEN">Set</span> Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:=&quot;Textmarke1&quot )
Bereich.InsertAfter Me!TextfeldName1
<span class="TOKEN">Set</span> Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:=&quot;Textmarke2&quot )
Bereich.InsertAfter Me!TextfeldName2
<span class="TOKEN">Set</span> Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:=&quot;Textmarke3&quot )
Bereich.InsertAfter Me!TextfeldName3
&nbsp;
&nbsp;
objWordApp.Activate <span class="REM">'WinWord in den Vordergrund bringen</span>
&nbsp;
&nbsp;
<span class="REM"> 'Verweise auf WinWord-Objekte freigben.</span>
<span class="TOKEN">Set</span> Bereich = <span class="TOKEN">Nothing</span>
<span class="TOKEN">Set</span> objWordApp = <span class="TOKEN">Nothing</span>
&nbsp;
ExitWinWord:
<span class="TOKEN">Exit Sub</span>
&nbsp;
ErrWinWord:
Select Case Err.Number
Case 5101
MsgBox &quot;Die Textmarke wurde in der Vorlage nicht gefunden.&quot;, vbCritical
Case 429
MsgBox &quot;Das OLE-Objekt f&uuml;r WinWord konnte nicht erstellt werden.&quot;, vbCritical
Case 5137, 5151
MsgBox &quot;Die Vorlage &quot; &amp; strVorlage &amp; &quot; wurde nicht gefunden.&quot;, vbCritical
<span class="TOKEN">Case Else</span>
MsgBox Err.Description, vbCritical
<span class="TOKEN">End</span> Select
<span class="TOKEN">Resume</span> ExitWinWord
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>
&nbsp;
<span class="TOKEN">Private Function</span> IstWordGestartet() <span class="TOKEN">As</span> <span class="TOKEN">Boolean</span>
<span class="REM">'Stellt fest, ob Winword-97 gerade geladen ist</span>
&nbsp;
<span class="TOKEN">Dim</span> obj <span class="TOKEN">As</span> Object
&nbsp;
<span class="TOKEN">On</span> <span class="TOKEN">Error</span> <span class="TOKEN">Resume</span> <span class="TOKEN">Next</span>
<span class="TOKEN">Set</span> obj = GetObject(, &quot;Word.Application&quot ) <span class="REM">'nach WinWord suchen</span>
IstWordGestartet = (Err.Number = 0)
<span class="TOKEN">Set</span> obj = <span class="TOKEN">Nothing</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>

Du mußt hier noch den "Namen des Buttons", den Namen der "Dokumentvorlage" und die "Namen der Textmarken / Textfelder" anpassen.

dannimausi
08.11.2001, 09:29
Vielen Dank! Wenn das klappt hab ich ein groooooosses Problem weniger!

Ich werde das ganze heute nachmittag ausprobieren... Dann kriegst du auch nochmal Feedback.

Danke!

Gruss,
Danni

dannimausi
12.11.2001, 15:59
Hallo Peppi!

Ich hab jetzt deinen Code ausprobiert und ein Problem damit:
Wenn ich ihn laufen lasse bekomme ich die Fehlermeldung "Variable not defined" in der Zeile:
Set Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:="Textmarke1")
bei GotoBookmark.

Was tun???

Kannst du mir nochmal helfen bitte???

Danke!

Gruss,
Danni

Flip
12.11.2001, 16:05
Sorry, dass ich mich da einmische, aber auf was für einem System arbeitest du? Office 2000?

dannimausi
12.11.2001, 16:18
Nö, 97.

peppi
12.11.2001, 19:14
Hallo,

sorry, bin gerade nach Hause gekommen.

Hast Du "Textmarke1" durch den Namen Deiner in Word eingefügten Textmarke ersetzt?

Also, wenn Du hier bei
Set Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:="Nachname" Bereich.InsertAfter Me!TextfeldName1

stehen hast, muß in Deiner Wordvorlage auch eine Textmarke mit Namen Nachname existieren. Und das Feld in Access muß auch den Namen haben, den Du hier bei Me!TextfeldName1 angegeben hast.

dannimausi
13.11.2001, 06:47
Hallo Peppi!

Ja das hab ich alles richtig.
Die Fehlermeldung kommt genau bei dem Befehl GotoBookmark und sagt, dass diese Variable nicht definiert ist. Als was müsste ich denn dieses GotoBookmark definieren??? Offensichtlich kennt er diesen Befehl nicht.

Gruss,
Danni

peppi
13.11.2001, 08:09
Hallo,

kommt die Fehlermeldung in Access oder in Word?

Dieser Code ist auch nicht "auf meinem Mist" gewachsen, sondern ich habe diesen aus einer Beispieldatei übernommen. Bei mir funktioniert er solange einwandfrei, solange ich alle dort definierten Textmarken in Word angelegt habe.
Sobald auch nur eine Textmarke, die ich im Code angegeben habe, nicht vorhanden ist, erhalte ich auch eine Fehlermeldung.

Hast Du schon alle Verweise in Access überprüft?

Ist die Word-Dokumentvorlage in dem Ordner, den Du in den Access-Optionen als Standardordner definiert hast??

Ich sehe nochmals nach, wo ich die Original-Datei habe und schicke sie Dir per eMail (falls Du keine angegeben hast, kannst Du sie mir ja zwischenzeitlich angeben).

dannimausi
13.11.2001, 09:01
Die Fehlermeldung kommt in Access. Offensichtlich kennt Access die Variable oder den Befehl GotoBookmark nicht. Könnte durchaus an den Verweisen liegen. Ich werde das gleich mal überprüfen. Welche Verweise müssten denn alle aktiviert sein??

Meine mail: stagiaire.ew2@be.bosch.com

Danke!

peppi
13.11.2001, 09:59
Hallo,

komisch, wenn ich den Beitrag anklicke, sehe ich Deinen letzten nicht. Jetzt, bei Klick auf "Beantworten" sehe ich ihn.

Irgendwie ist heute wieder der Teufel im Forum ??

Bei mir sind nachfolgende Verweise aktiv:
- Visual Basic for Applications
- Microsoft Access 8.0 Object Library
- Microsoft DAO 3.51 Object Library

dannimausi
13.11.2001, 10:55
Hallo!

An den Verweisen kanns nicht liegen, die sind in Ordnung.

Ich hab jetzt aus meinem Code das Option Explicit rausgenommen, jetzt meckert er nicht mehr, dass er die Variable nicht kennt. Er öffnet mir auch gaaanz brav Word und die Dokumentvorlage.
Nur gibt er mir jetzt die Fehlermeldung, dass die angesprochene Textmarke nicht existiert, obwohl sie das wohl tut!

Hast du noch eine Idee???

Gruss,
Danni

peppi
13.11.2001, 11:14
Hallo,

also wenn er meckert, daß die Textmarke nicht existiert, stimmt da auch irgendwas nicht. Prüfe nochmals die Schreibweise genau nach (evtl. irgendein Zeichendreher o.ä.).

Gehe in dem Word-Dokument nochmals genau die Textmarken durch (hab's schon erlebt, daß Word irgendeine beim erneuten Öffnen "verschluckt" hatte, obwohl sie vorher da war).
Schicke Dir hier nachfolgend mal einen Code, mit dem Du die Textmarken prüfen kannst. Sie werden dann markiert und der Name angezeigt:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> TextmarkenZeigen()
<span class="REM">'</span>
<span class="REM">' TextmarkenZeigen Makro</span>
<span class="REM">'</span>
<span class="REM">'Sub TextmarkenKommentar()</span>
<span class="REM">'Markiert alle Textmarken im Dokument.</span>
<span class="REM">'Und setzt einen Kommentar als Namen der Textmarke.</span>
&nbsp;
<span class="TOKEN">Dim</span> AnzahlBookm <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
&nbsp;
AnzahlBookm = ActiveDocument.Bookmarks.Count
&nbsp;
<span class="TOKEN">For</span> i = 1 <span class="TOKEN">To</span> AnzahlBookm
ActiveDocument.Bookmarks(i).Select
Selection.Comments.Add Range:=Selection.Range, Text:=ActiveDocument.Bookmarks(i).Name
<span class="TOKEN">Next</span>
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>

Sonst fällt mir nix mehr dazu ein.