Word - Namen aus Liste zu einzelnen Überschriften machen.

  • #1
S

Sir_Gallant

Bekanntes Mitglied
Themenersteller
Dabei seit
28.10.2004
Beiträge
93
Reaktionspunkte
0
Ort
Herrenberg
Hallo zusammen,

ich habe folgendes Problem:
Aus einer Liste von Namen soll ich einzelne DIN A4 Blätter machen, von denen jedes Blatt je einen Namen als Überschrift hat, der Rest des Blattes soll leer bleiben. Nun halte ich es für reichlich umständlich, jede Seite extra zu bearbeiten. Gibt es für Word eine Möglichkeit, dass dieser Prozess automatisch abläuft, sprich: Eine Option, die aus den Listennamen einzelne Seitenüberschriften macht?
 
  • #2
Hallo Sir_Gallant,

das kann man automatisieren  ;)

In was für einer Form liegt die Namenliste denn vor.

Am günstigsten wäre es, wenn du ein Template einer Worddatei erstellen würdest. die eine Textmarke enthält, an der Stelle, wo der Name eingefügt werden soll. Dann ist die Formatierung schon mal vorgegeben.

Ein Makro könnte dann über die Namensliste rattern  ;D , eine Datei auf Grundlage des Templates anlegen, die Textmarke durch den Namen ersetzen und die Datei in einem vorher definierten Pfad speichern.

Gruß Matjes :)
 
  • #3
Danke erstmal,

Die Namenliste liegt in noch keinem Format vor, da ich sie sowieso erst noch eintippen muss. Jetzt besteht nur noch das Problem mit dem Makro. Hat vielleicht zufälligerweise jemand ein fertiges Makro, das Namen aus einer Excel/Word Datei lesen kann?
 
  • #4
Hallo Sir_Gallant,

bau doch mal die Excel-Namensliste auf. (5 Dummy-Namen reichen)

Dann erstellst du das template-file VorlageNamen.doc mit der Text-Marke.

Wenn Du mir beides an meinen mail-Addy schickst, bau ich dir den Makro zusammen.

Gruß Matjes :)
 
  • #5
als ergebnis ist rausgekommen:
Code:
Option Explicit

Sub Namensliste_DocsPerTemplateErzeugen()

 ->Definition
 ->!!!!!!! A N P A S S E N !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  Const c_EXCEL_NAMENSLISTE = c:\Test_Namensliste\Namenliste.xls
  Const c_ERSTEWERTEZEILE = 1
  Const c_SP_Name = 1->Spalte A
  
  Const c_DOC_TEMPLATE = c:\Test_Namensliste\VorlageNamen.doc
  Const c_TEXTMARKE = NameErsetzen
  
  Const c_DOC_OUTPUT = c:\Test_Namensliste\Output
 ->im VB-Editor unter Extras->Verweise-> Microsoft Word x.0 Object Library einbinden
 ->(das x hängt von deiner Word-Version ab)
 ->!!!!!!! A N P A S S E N !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
  Dim wb As Workbook, ws As Worksheet
  Dim wrdApp As Word.Application, wrdDoc As Word.Document
  Dim l_zeile As Long, s_Name As String
  
 ->Dateien und Pfade auf Existenz prüfen
  If Dir(c_EXCEL_NAMENSLISTE, vbNormal) =  Then
    MsgBox (Excel-Namensliste ist nicht vorhanden. & vbLf & c_EXCEL_NAMENSLISTE)
    Exit Sub
  End If
  If Dir(c_DOC_TEMPLATE, vbNormal) =  Then
    MsgBox (Doc-Template ist nicht vorhanden. & vbLf & c_DOC_TEMPLATE)
    Exit Sub
  End If
  If Dir(c_DOC_OUTPUT, vbDirectory) =  Then
    MsgBox (Output-Dirrectoy ist nicht vorhanden. & vbLf & c_DOC_OUTPUT)
    Exit Sub
  End If
  
 ->Excel-Namensliste öffnen
  Set wb = Workbooks.Open(FileName:=c_EXCEL_NAMENSLISTE)
 ->erstes Blatt ist Namensliste
  Set ws = wb.Worksheets(1)
  
 ->Word-Instanz öffnen
  Set wrdApp = CreateObject(Word.Application)
  
 ->Namen abarbeiten
  l_zeile = c_ERSTEWERTEZEILE
  Do
    s_Name = ws.Cells(l_zeile, c_SP_Name).Value
    
    If s_Name =  Then Exit Do->leerer Name -> Listeende
    
   ->Vorlagen-Datei öffnen
    Set wrdDoc = wrdApp.Documents.Open(FileName:=c_DOC_TEMPLATE)
    
   ->Textmarke durch Namen ersetzen
    On Error Resume Next
    wrdDoc.Bookmarks(c_TEXTMARKE).Range.Text = s_Name
    If Err.Number <> 0 Then
      Err.Clear
      wrdDoc.Close Savechanges:=False
      MsgBox (Textmarke konnte nicht ersetzt werden.)
      GoTo AUFRAEUMEN
    End If
        
   ->Datei im Output unter Namen als .doc speichern
    wrdDoc.SaveAs _
      FileName:=c_DOC_OUTPUT & \ & s_Name & .doc, _
      FileFormat:=wdFormatDocument
    wrdDoc.Close Savechanges:=False
       
   ->nächste Zeile in Excel-Namensliste
    l_zeile = l_zeile + 1
  Loop
  
AUFRAEUMEN:
 ->Word schliessen
  wrdApp.Quit
 ->Objekt-Variable löschen
  Set wrdDoc = Nothing:  Set wrdApp = Nothing
  
 ->Excel-Namenliste schliessen
  wb.Close Savechanges:=False
  Set wb = Nothing: Set ws = Nothing
  
End Sub

Gruß Matjes  :)
 
  • #6
Danke, hat einwandfrei funktioniert :D
 
  • #7
Sehr elegant, aber ist das nicht mit Makros auf Spatzen schießen?

Die Word-Serienbrief-Funktion tut das gleiche.
 
Thema:

Word - Namen aus Liste zu einzelnen Überschriften machen.

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben