online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon der-bettler vom 14.01.2021, 11:14 Options

Lösung

Makro um aus Excel > Word Dokumente zu erstellen

Nabend Leute

OK hier meine Frage.
Ich habe ein Excel Dokument und in einer Spalte sind verschiedene Zahlen. Ziel ist es für jede Zeile dieser Spalte ein Worddokument zu erstellen, in dessen Name die Zahl vorkommt.
Auch soll in dem Worddokument an einer bestimmten Stelle die Zahl erscheinen.
BSP:
Excel Spalte
|1|
|2|
|3|
|4|
|5|

Daraus sollen nun 5 Worddokumente erstellt werden mit den Namen
Beispielname Nr.1.doc
Beispielname Nr.2.doc
Beispielname Nr.3.doc
Beispielname Nr.4.doc
Beispielname Nr.5.doc

Und in jedem der Dokumente sollte es dann zb. eine Überschrift geben die heißt.
Das hier ist Dokument 1
Das hier ist Dokument 2
Das hier ist Dokument 3
Das hier ist Dokument 4
Das hier ist Dokument 5


Klingt irgendwie komisch und kompliziert.
Aber das sind über 300 verschiedene Zahlen, und für jedes brauche ich ein Worddokument. Das von Hand zu erledigen ist noch bescheuerter, als dafür ne automatische Lösung zu suchen.

Falls mir also jemand dabei Helfen könnte, oder ein Makro kennt, oder mir ne gute Site nennen könnte, auf der ich mich ersteinmal zum Thema Makros einlesen könnte, wäre mir schon geholfen.
Vielen Dank

mfg der-bettler


Antwort schreiben

Antwort 1 von der-bettler vom 14.01.2021, 14:21 Options

und hoch damit

mfg der-bettler

Antwort 2 von malSchauen vom 14.01.2021, 16:38 OptionsLösung

Lösung
Hi,

Ich gehe mal davon aus, daß Du grundlegend mit Excel-Macros vertraut bist. Wenn ja, kannst Du einmal folgendes probieren bzw. als Denkanstoß verwenden:

Sub WDErstellung()
Dim objWA As Object, objWD As Object
Dim intRow As Integer
Dim lngCount As Integer
Dim strScratch As String, strText As String
Dim strPfad As String, strName As String

intRow = 1                            'QuellSpalte (hier A)
strPfad = "C:\Test2\"                 'Pfad muss in diesem Beispiel existieren
strText = "Das hier ist Dokument "    'zu schreibender Text
strName = "Beispielname Nr."          'Name der Dateien

Set objWA = CreateObject("Word.application")  'Word öffnen
'objWA.Visible = True                         'falls man zuschauen möchte
With ThisWorkbook.ActiveSheet
  For lngCount = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
    If .Cells(lngCount, intRow).Value <> "" And IsNumeric(.Cells(lngCount, intRow).Value) Then
      strScratch = .Cells(lngCount, intRow).Value
      Set objWD = objWA.documents.Add
      With objWA
        .Selection.Font.Name = "Arial"
        .Selection.Font.Size = 16
        .Selection.Font.Underline = True
        .Selection.TypeText Text:=strText & strScratch & " !"
      End With
      objWD.SaveAs (strPfad & strName & strScratch & ".doc")  'WD speichern
      objWD.Close                                             'WD schließen
    End If
  Next lngCount
End With
objWA.Quit                                                    'Word-Anwendung schliessen
End Sub


Bye

Antwort 3 von malSchauen vom 14.01.2021, 17:27 Options

Hi,

ups... Der Einstieg in die FOR-Schleife ist falsch. Der bezieht sich immer auf SpalteA und sollte geändert werden in:

For lngCount = 1 To .Cells(Rows.Count, intRow).End(xlUp).Row
.
.
.
next lngCount


Bye

Antwort 4 von der-bettler vom 15.01.2021, 08:50 Options

gute morgen

danke schoneinmal für das vba script
alleine das sollte mir schoneinmal viel zeit sparen
ich versuche das ganze nun noch etwas umzubauen
und zwar habe ich eine word vorlage, die ich dabei für jedes zu erstellende word verwenden möchte
und der text
"Das hier ist Dokument 2"
muss an eine bestimmte stelle

ich probiere einmal rum

danke

mfg der-bettler

Antwort 5 von der-bettler vom 15.01.2021, 09:38 Options

so nochmal rückmeldung von mir
klappt nun alles so wie ich will

die vorlage kann man ja einfach temporär als normal.dot einbinden

den code habe ich dahingehened verändert, das er mit dem move befehl an die entsprechende stelle geht

Sub WDErstellung()
Dim objWA As Object, objWD As Object
Dim intRow As Integer
Dim lngCount As Integer
Dim strScratch As String, strText As String
Dim strPfad As String, strName As String

intRow = 14 'QuellSpalte (hier A)
strPfad = "C:\Test2\" 'Pfad muss in diesem Beispiel existieren
strText = "" 'zu schreibender Text
strName = "FRD " 'Name der Dateien

Set objWA = CreateObject("Word.application") 'Word öffnen
'objWA.Visible = True 'falls man zuschauen möchte
With ThisWorkbook.ActiveSheet
For lngCount = 1 To .Cells(Rows.Count, intRow).End(xlUp).Row
If .Cells(lngCount, intRow).Value <> "" And IsNumeric(.Cells(lngCount, intRow).Value) Then
strScratch = .Cells(lngCount, intRow).Value
Set objWD = objWA.documents.Add
With objWA
.Selection.Move Count:=37
.Selection.Delete Count:=9
.Selection.Font.Name = "Calibri"
.Selection.Font.Size = 16
.Selection.Font.Underline = False
.Selection.TypeText Text:=strText & strScratch
End With
objWD.SaveAs (strPfad & strName & strScratch & ".doc") 'WD speichern
objWD.Close 'WD schließen
End If
Next lngCount
End With
objWA.Quit 'Word-Anwendung schliessen
End Sub




von daher nochmals vielen dank für den code und die anregung

mfg der-bettler

Antwort 6 von malSchauen vom 15.01.2021, 10:22 Options

Hi,

Dann sollten die ca. 300 Dateien ja schon fertig sein. ;-)

Kleiner Nachtrag:

Neues Doc auf der Basis einer anderen Vorlage als normal.dot liesse sich erledigen wie folgt:
Set objWD = objWA.documents.Add("meineVorlage.dot")

Oder, wenn es keine "echte" Vorlage ist, kannst Du auch ein WordDoc öffnen, welches als Basis dienen soll. Das könnte dann so aussehen:
Set objWD = objWA.documents.Open("E:\Test\meineDatei.doc")


Bye

Antwort 7 von der-bettler vom 15.01.2021, 11:07 Options

huhu

danke noch für das nachreichen der vorlage
so muss man seine normal.dot nicht ersetzten
vielen dank nochmals

mfg der-bettler

Antwort 8 von Ironing-Man vom 13.03.2021, 08:30 Options

diese Lösung hat mich SEHR geholfen.
Eine offene Frage... Wie kann ich den Zeilenabstand (line-space) auf 0 setzen?

George

Ähnliche Themen

Excel Makro in viele Excel Files exportieren
SteffenVV  23.07.2007 - 143 Hits - 1 Antwort

"Einfügen" als Makro erstellen
PierreHamburg  29.07.2007 - 71 Hits - 2 Antworten

Word mit einem Makro in Excel starten
Drehbank69  12.11.2007 - 163 Hits - 2 Antworten

makro in excel erstellen
sonic72  25.03.2008 - 48 Hits - 1 Antwort

mit Excel Liste automatisch neue Excel-Dateien erstellen
jschade  26.09.2008 - 216 Hits - 5 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026