Thema Datum  Von Nutzer Rating
Antwort
Rot Serienbrief erstellen mit Anhang
03.11.2020 11:03:32 Eyyub
NotSolved

Ansicht des Beitrags:
Von:
Eyyub
Datum:
03.11.2020 11:03:32
Views:
1327
Rating: Antwort:
  Ja
Thema:
Serienbrief erstellen mit Anhang

Hallo alle Zusammen,

ich habe hier ein Makro, das leider nicht so funktioniert, wie ich es mir wünsche. 

Ich habe ein Makro, mit dem ich Serienbriefe erstellen kann. Das funktioniert auch. Code füge ich noch ein.

Dann habe ich ein Makro, mit dem ich erfolgreich eine Tabelle aus einer externen Excel-Tabelle auf eine zweite Seite importieren kann. Funktioniert auch.

Jetzt versuche ich, beides zu kombinieren. Er fügt die Tabelle erfolgreich ein, zerschießt jedoch die eigentliche Rechnung, welche aus dem Serienbrief erstellt wird.

Hier der Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Sub WORDspeichern()
    ' set variables
    Dim iBrief As Integer, sBrief As String
    Dim AppShell As Object
    Dim BrowseDir As Variant
    Dim Path As String
    
    ' catch any errors
    On Error GoTo ErrorHandling
    
    ' determine path
    Set AppShell = CreateObject("Shell.Application")
    Set BrowseDir = AppShell.BrowseForFolder(0, "Speicherort für Serienbriefe auswählen", 0, (strStartPath))
    
    If BrowseDir = "Desktop" Then
        Path = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Else
        Path = BrowseDir.items().Item().Path
    End If
    
    If Path = "" Then GoTo ErrorHandling
        
    Path = Path & "\Rechnungen-" & Format(Now, "dd.mm.yyyy-hh.mm.ss") & "\"
    MkDir Path
    
    On Error GoTo ErrorHandling
        
    ' hide application for better performance
    MsgBox "WATERcontrol Rechnungen werden einzeln als WORD-Dateien exportiert!", vbOKOnly + vbInformation
'    Application.Visible = False
     
    ' create bulkletter and export as pdf
    With ActiveDocument.MailMerge
        .DataSource.ActiveRecord = 1
        Do
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = .ActiveRecord
                .LastRecord = .ActiveRecord
                CreateAnlage
                sBrief = Path & "2020-" & .DataFields("RECHNUNG").Value & ".doc"
            End With
            .Execute Pause:=False
        
            If .DataSource.DataFields("RECHNUNG").Value > "" Then
                ActiveDocument.SaveAs FileName:=sBrief
            End If
            ActiveDocument.Close False
        
            If .DataSource.ActiveRecord < .DataSource.RecordCount Then
                .DataSource.ActiveRecord = wdNextRecord
            Else
                Exit Do
            End If
        Loop
    End With
    
    ' error handling
ErrorHandling:
    Application.Visible = True
  
    If Err.Number = 76 Then
        MsgBox "Der ausgewählte Speicherort ist ungültig", vbOKOnly + vbCritical
    ElseIf Err.Number = 5852 Then
        MsgBox "Das Dokument ist kein Serienbrief"
    ElseIf Err.Number = 4198 Then
        MsgBox "Der ausgewählte Speicherort ist ungültig", vbOKOnly + vbCritical
    ElseIf Err.Number = 91 Then
        MsgBox "Exportieren von Rechnungen abgebrochen", vbOKOnly + vbExclamation
    ElseIf Err.Number > 0 Then
        MsgBox "Unbekannter Fehler: " & Err.Number & " - Bitte Makro erneut ausführen.", vbOKOnly + vbCritical
    Else
        MsgBox "Rechnungen erfolgreich exportiert", vbOKOnly + vbInformation
    End If
 
End Sub
 
Sub CreateAnlage()
Dim rng As Range
Set rng = Selection.Bookmarks("\Page").Range
rng.SetRange rng.End, rng.End
rng.Select
Selection.InsertBreak Type:=wdPageBreak
Selection.Orientation = wdTextOrientationVertical
Set rng = Nothing
importFromExcel
End Sub
 
Private Sub importFromExcel()
 
Dim exTab As Object
Dim strPath As String
Dim strPath2 As String
Dim rngPrintArea As Excel.Range
Dim iRow, iColumn As Integer
Dim einfuegeBereich As Range
Dim WordTable As Word.Table
 
strPath = "C:\Users\EA.Alici\Documents\TabelleUbersicht2.xlsx"
strPath2 = ActiveDocument.Path & "\anlagen_excel\20373.xlsx"
 
 
Set exTab = CreateObject("excel.application")
'exTab.workbooks.Open strPath
exTab.Workbooks.Open strPath2
exTab.Visible = True
'exTab.WorkSheets("Liste Programme und Computer").Activate
exTab.Worksheets("AnlagenTab").Activate
iRow = exTab.Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
iColumn = exTab.Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
exTab.Range(Cells(1, 1), Cells(iRow, iColumn)).Select
exTab.Range(Cells(1, 1), Cells(iRow, iColumn)).Copy
'Textmarker
'Seitenumbruch
'Set einfuegeBereich = ActiveDocument.Range(ActiveDocument.Range.End - 1, ActiveDocument.Range.End)
'einfuegeBereich.Paste
ActiveDocument.Activate
Selection.Paste
Set WordTable = ActiveDocument.Tables(ActiveDocument.Tables.Count)
 
ActiveDocument.Tables(ActiveDocument.Tables.Count).Select
 
With Selection.ParagraphFormat
    .LeftIndent = CentimetersToPoints(0.2)
    .RightIndent = CentimetersToPoints(0.2)
End With
 
WordTable.AutoFitBehavior (wdAutoFitWindow)
 
exTab.Application.DisplayAlerts = False
exTab.Workbooks.Close
End Sub

 

Ich bin echt kurz vor'm Ziel, das aktuelle Problem jedoch zerbricht mir echt meinen Kopf. Ich hoffe ihr könnt mir helfen.

 

Grüße,

Eyyub


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Serienbrief erstellen mit Anhang
03.11.2020 11:03:32 Eyyub
NotSolved