Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Programmieren

Makro Programmieren
04.06.2019 15:40:21
Luk
Hallo zusammen,
ich möchte Daten von der angehängten Excel-Tabelle in die vorformatierte Wordtabelle übertragen.
Ich mache für unser Kloster den Liturgieplan (Planung der Hl. Messen , hier habe ich Daten in Excel, die ich gerne automatisch in Word eingefügt hätte.
Kann mir da jemand weiterhelfen?
Die Excel und die Word Datei ist unten angehängt.
https://www.herber.de/bbs/user/130186.xlsx
https://www.herber.de/bbs/user/130187.doc
Gruß Luk

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Programmieren
04.06.2019 19:47:31
{Boris}
Hi,
entweder sollte Dein Word-Dokument Textmarken / Formularfelder beinhalten (die man dann per VBA ansprechen kann), oder aber Du baust das Word-Dokument in Excel nach - dann brauchst Du gar keine Programmierung sondern kannst mit normalen Verweisen arbeiten.
VG, Boris
AW: Makro Programmieren
05.06.2019 11:25:37
Luk
Lieber Boris,
vielen Dank für den Hinweis.
Ich hab die Word Datei nun mit Formularfeldern versehen.
In der Word datei steht auch genau welche Formularfelder ich mit welchen Excelfeldern verknüpfen möchte.
Könnte mir das jemand programmieren?
https://www.herber.de/bbs/user/130199.doc
https://www.herber.de/bbs/user/130200.xlsx
Luk
Anzeige
AW: Makro Programmieren
05.06.2019 13:46:34
UweD
Hallo
die Formularfelder würde ich nicht nehmen.
Gehe einmal so vor
- im Worddokument die Textstelle markieren (Beispiel das Datum)
- Einfügen, Links, Textmarke
- bei Textmarkenname dann F11 eintragen und Hinzufügen
- Weiter mit G11, H11, I11 und K11
- Das gleiche mit 12, bis 18 machen
- Speichern als "Liturgieplan.doc"
Ich habs mal für 11 und 12 eingetragen
https://www.herber.de/bbs/user/130213.doc


Dann im Excel dieses Makro verwenden
Modul1
Option Explicit 
 
Sub WordDatei() 
    Dim objWDApp As Object, objDocx As Object 
    Dim WPfad As String, WDatei As String, WNeuNam As String 
    Dim TB, i As Integer 
     
    Set TB = ThisWorkbook.Sheets("Tabelle1") 
     
    WPfad = "x:\Temp\" 
    WDatei = "Liturgieplan.doc" 
     
    '*** Word-Anwendung sichtbar starten 
    Set objWDApp = CreateObject("Word.Application") 
    objWDApp.Visible = True 
                            
    '*** neue Datei aus Vorlage generieren 
    Set objDocx = objWDApp.Documents.Add(WPfad & WDatei) 
     
    With objDocx 
     
        For i = 11 To 18 
         
            '*** prüfen, ob Textmarken existieren, dann im Worddokument einfügen/ersetzen 
            If .Bookmarks.Exists("F" & i) Then 
                .Bookmarks("F" & i).Range.Text = Format(DateValue(TB.Cells(i, 6) & "." & TB.Cells(8, 5) & " " & Year(Date)), "DD.MM.") 
            End If 
             
            If .Bookmarks.Exists("G" & i) Then 
                .Bookmarks("G" & i).Range.Text = TB.Cells(i, 7) 
            End If 
             
            If .Bookmarks.Exists("H" & i) Then 
                Select Case TB.Cells(i, 8) 
                    Case "ex" 
                        .Bookmarks("H" & i).Range.Text = "extraordinaria" 
                    Case "o" 
                        .Bookmarks("H" & i).Range.Text = "ordinaria" 
                End Select 
            End If 
             
            If .Bookmarks.Exists("I" & i) Then 
                .Bookmarks("I" & i).Range.Text = TB.Cells(i, 9) & " Klasse" 
            End If 
             
            If .Bookmarks.Exists("K" & i) Then 
                .Bookmarks("K" & i).Range.Text = TB.Cells(i, 11) 
            End If 
             
        Next 
         
        '*** Neuen Namen zusammensetzen 
        WNeuNam = Format(Date, "YYYYMMDD") & "_" & WDatei 
         
        '*** Worddatei mit neuem Namen speichern 
        .SaveAs (WPfad & WNeuNam) 
     
    End With 
     
    '*** Word schließen 
    'objWDApp.Quit 'bei Bedarf 
 
End Sub 

LG UweD
Anzeige
AW: Makro Programmieren
05.06.2019 15:13:07
Luk
Lieber Uwe,
vielen Dank für deine großartige Hilfe.
Ich hab die Textmarken nun eingetragen.
https://www.herber.de/bbs/user/130219.doc
Das Makro habe ich in Excel eingegeben. Leider findet er die Datei Liturgieplan nicht. Wie genau muss ich da den Dateipfad in Makrotext angeben?
Luk
AW: Makro Programmieren
05.06.2019 15:17:14
Luk
Hier die Fehlermeldung:
Userbild
AW: Makro Programmieren
05.06.2019 15:22:10
UweD
Hallo
so wie hier angegeben.

WPfad = "x:\Temp\"
WDatei = "Liturgieplan.doc" 
mögliche Ursachen
- fehlendes \ am Ende der Pfades
- Pfad gibt es nicht
- evtl. keine .doc sondern .docx
- Schreibfehler im Namen
- ...
LG UweD
Anzeige
AW: Makro Programmieren
05.06.2019 16:07:18
Luk
Lieber Uwe,
ich bin begeistert. Vielen vielen Dank für deine Unterstützung!
Das Makro funktioniert.
Nun hätte ich noch eine Kleinigkeit.
Ich möchte gerne noch die Felder J7 K7 L7 M7 N7 auch verlinken mit Word.
https://www.herber.de/bbs/user/130222.xlsx
Kannst du mir das auch noch machen.
In meiner WOrd Datei habe ich die Textmarken schon gesetzt.
Luk
AW: Makro Programmieren
05.06.2019 16:49:10
Luk
Sorry ich meinte die Felder M11 N11 O11 P11 Q11
AW: Makro Programmieren
05.06.2019 17:01:45
UweD
Hi
nach dem gleichen Muster
Option Explicit
 
Sub WordDatei()
    Dim objWDApp As Object, objDocx As Object
    Dim WPfad As String, WDatei As String, WNeuNam As String
    Dim TB, i As Integer
     
    Set TB = ThisWorkbook.Sheets("Tabelle1")
     
    WPfad = "x:\Temp\"
    WDatei = "Liturgieplan.doc"
     
    '*** Word-Anwendung sichtbar starten 
    Set objWDApp = CreateObject("Word.Application")
    objWDApp.Visible = True
                            
    '*** neue Datei aus Vorlage generieren 
    Set objDocx = objWDApp.Documents.Add(WPfad & WDatei)
     
    With objDocx
     
        For i = 11 To 18
         
            '*** prüfen, ob Textmarken existieren, dann im Worddokument einfügen/ersetzen 
            If .Bookmarks.Exists("F" & i) Then
                .Bookmarks("F" & i).Range.Text = Format(DateValue(TB.Cells(i, 6) & "." & TB.Cells(8, 5) & " " & Year(Date)), "DD.MM.")
            End If
             
            If .Bookmarks.Exists("G" & i) Then
                .Bookmarks("G" & i).Range.Text = TB.Cells(i, 7)
            End If
             
            If .Bookmarks.Exists("H" & i) Then
                Select Case TB.Cells(i, 8)
                    Case "ex"
                        .Bookmarks("H" & i).Range.Text = "extraordinaria"
                    Case "o"
                        .Bookmarks("H" & i).Range.Text = "ordinaria"
                End Select
            End If
             
            If .Bookmarks.Exists("I" & i) Then
                .Bookmarks("I" & i).Range.Text = TB.Cells(i, 9) & " Klasse"
            End If
             
            If .Bookmarks.Exists("K" & i) Then
                .Bookmarks("K" & i).Range.Text = TB.Cells(i, 11)
            End If
             
            If .Bookmarks.Exists("M" & i) Then
                .Bookmarks("M" & i).Range.Text = TB.Cells(i, 13)
            End If
             
            If .Bookmarks.Exists("N" & i) Then
                .Bookmarks("N" & i).Range.Text = TB.Cells(i, 14)
            End If
            
            If .Bookmarks.Exists("O" & i) Then
                .Bookmarks("O" & i).Range.Text = TB.Cells(i, 15)
            End If
            
            If .Bookmarks.Exists("P" & i) Then
                .Bookmarks("P" & i).Range.Text = TB.Cells(i, 16)
            End If
            
            If .Bookmarks.Exists("Q" & i) Then
                .Bookmarks("Q" & i).Range.Text = TB.Cells(i, 17)
            End If
             
             
        Next
         
        '*** Neuen Namen zusammensetzen 
        WNeuNam = Format(Date, "YYYYMMDD") & "_" & WDatei
         
        '*** Worddatei mit neuem Namen speichern 
        .SaveAs (WPfad & WNeuNam)
     
    End With
     
    '*** Word schließen 
    'objWDApp.Quit 'bei Bedarf 
 
End Sub

LG UweD
Anzeige
AW: Makro Programmieren
05.06.2019 18:15:17
Luk
Sorry besser wäre M12 N12 O12 P12 Q12
AW: Makro Programmieren
06.06.2019 08:48:08
UweD
Hi
ok. Das wird also nur 1x benötigt...
dann so...
Option Explicit
 
Sub WordDatei()
    Dim objWDApp As Object, objDocx As Object
    Dim WPfad As String, WDatei As String, WNeuNam As String
    Dim TB, i As Integer
     
    Set TB = ThisWorkbook.Sheets("Tabelle1")
     
    WPfad = "x:\Temp\"
    WDatei = "Liturgieplan.doc"
     
    '*** Word-Anwendung sichtbar starten 
    Set objWDApp = CreateObject("Word.Application")
    objWDApp.Visible = True
                            
    '*** neue Datei aus Vorlage generieren 
    Set objDocx = objWDApp.Documents.Add(WPfad & WDatei)
     
    With objDocx
     
        For i = 11 To 18
         
            '*** prüfen, ob Textmarken existieren, dann im Worddokument einfügen/ersetzen 
            If .Bookmarks.Exists("F" & i) Then
                .Bookmarks("F" & i).Range.Text = Format(DateValue(TB.Cells(i, 6) & "." & TB.Cells(8, 5) & " " & Year(Date)), "DD.MM.")
            End If
             
            If .Bookmarks.Exists("G" & i) Then
                .Bookmarks("G" & i).Range.Text = TB.Cells(i, 7)
            End If
             
            If .Bookmarks.Exists("H" & i) Then
                Select Case TB.Cells(i, 8)
                    Case "ex"
                        .Bookmarks("H" & i).Range.Text = "extraordinaria"
                    Case "o"
                        .Bookmarks("H" & i).Range.Text = "ordinaria"
                End Select
            End If
             
            If .Bookmarks.Exists("I" & i) Then
                .Bookmarks("I" & i).Range.Text = TB.Cells(i, 9) & " Klasse"
            End If
             
            If .Bookmarks.Exists("K" & i) Then
                .Bookmarks("K" & i).Range.Text = TB.Cells(i, 11)
            End If
             
        Next
        
        
        ' unabhängis von Zeile nur 1x 
        If .Bookmarks.Exists("M12") Then
            .Bookmarks("M12").Range.Text = TB.Range("M12")
        End If
         
        If .Bookmarks.Exists("N12") Then
            .Bookmarks("N12").Range.Text = TB.Range("N12")
        End If
        
        If .Bookmarks.Exists("O12") Then
            .Bookmarks("O12").Range.Text = TB.Range("O12")
        End If
        
        If .Bookmarks.Exists("P12") Then
            .Bookmarks("P12").Range.Text = TB.Range("P12")
        End If
        
        If .Bookmarks.Exists("Q12") Then
            .Bookmarks("Q12").Range.Text = TB.Range("Q12")
        End If
        

        
        
         
        '*** Neuen Namen zusammensetzen 
        WNeuNam = Format(Date, "YYYYMMDD") & "_" & WDatei
         
        '*** Worddatei mit neuem Namen speichern 
        .SaveAs (WPfad & WNeuNam)
     
    End With
     
    '*** Word schließen 
    'objWDApp.Quit 'bei Bedarf 
 
End Sub

LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige