Laufzeitfehler 9105 bei bwd.mailmerge
21.08.2023 17:07:57
Tobias Thiede
Ich habe ein Problem mit meinem Code. Bis vor kurzem hat noch alles funktioniert, beim Kopieren der Datei nun in einen anderen Ordner damit ich die Namen der Listen auf die sich bezogen werden soll ändern kann, ist mir nun aufgefallen, dass es plötzlich beim bwd.mailmerge den Laufzeitfehler 9105 ausspuckt. Auch die alten Dateien wo es bisher funktioniert hat mukieren nun an dieser Stelle.
Bitte nicht über den Code lachen, ich weiß einiges würde bestimmt simpler gehen.
Aus Datenschutzgründen kann ich leider keine Datei hochladen, allerdings stehen in der Excel Tabelle in der ersten Spalte ein Datum in der zweiten Vorname und in der dritten Nachname. Diese hole ich mir aus den anderen Tabellen was auch funktioniert.
Die Word Datei die ausgeführt wird ist eine Sendung mit den Felder für Datum und Name, Vorname drin, was wie gesagt bis jetzt auch funktioniert hatte.
Vielleicht hat ja trotzdem jemand einen Hinweis warum es plötzlich nirgends mehr geht.
Option Explicit
Dim i, x, a, b, y, aktuelles_Jahr, LR, LC, LR3 As Integer
Dim objWorkbook As Workbook
Dim varEingabe As String
Dim c As Range
Private Sub Workbook_Open()
Application.ScreenUpdating = False
varEingabe = Application.InputBox(prompt:="Update = u/U sonst leerlassen", Title:="Update formeln?", Default:="")
If varEingabe = "u" Or varEingabe = "U" Then
Application.ScreenUpdating = True
Exit Sub
Else:
Sheets(1).Activate
LR = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
If LR 2 Then LR = 2
Range(Cells(2, 1), Cells(LR, 4)).ClearContents
Call Daten_aktualisieren
End If
Application.ScreenUpdating = True
End Sub
Sub Daten_aktualisieren()
Set objWorkbook = GetObject(ThisWorkbook.Path & "\Spätsommer.xls")
Call objWorkbook.Worksheets("Sheet1").Range("A1:S1000").Copy(Destination:=Worksheets(2).Cells(1, 1))
Workbooks("Spätsommer.xls").Sheets(1).Columns(3).EntireColumn.Delete
Workbooks("Spätsommer.xls").Sheets(1).Columns(4).EntireColumn.Delete
Workbooks("Spätsommer.xls").Sheets(1).Columns(5).EntireColumn.Delete
Workbooks("Spätsommer.xls").Sheets(1).Columns(7).EntireColumn.Delete
Workbooks("Spätsommer.xls").Sheets(1).Columns(7).EntireColumn.Delete
Workbooks("Spätsommer.xls").Sheets(1).Columns(8).EntireColumn.Delete
''Call objWorkbook.PrintOut
Call objWorkbook.Close(SaveChanges:=False)
Set objWorkbook = Nothing
Set objWorkbook = GetObject(ThisWorkbook.Path & "\Spätsommer Anreise Alle.xls")
Call objWorkbook.Worksheets("Sheet1").Range("A1:S10000").Copy(Destination:=Worksheets(3).Cells(1, 1))
Call objWorkbook.Close(SaveChanges:=False)
Set objWorkbook = Nothing
Call Copy_Names
End Sub
Sub Copy_Names()
Sheets(2).Activate
Cells.Select
Range("B9").Activate
Selection.UnMerge
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
Rows(LR).EntireRow.Delete
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
Rows(LR).EntireRow.Delete
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
For i = 15 To LR
If Left(Cells(i, 2), 5) = "erwar" Or Left(Cells(i, 2), 5) = "Summe" Or Left(Cells(i, 2), 5) = "Anrei" Then
Rows(i).EntireRow.Delete
End If
Next i
Sheets(3).Activate
Cells.Select
Range("B9").Activate
Selection.UnMerge
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
LR3 = Sheets(3).Cells(Rows.Count, 2).End(xlUp).Row
Sheets(2).Activate
Range("B17:R" & LR).Sort Key1:=Range("B17"), Order1:=xlAscending, DataOption1:=xlSortNormal
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
For a = 17 To LR
For i = 17 To LR3
If Sheets(3).Cells(i, 2) = Sheets(2).Cells(a, 2) Then
Sheets(2).Cells(a, 13) = Sheets(2).Cells(a, 14) + Sheets(3).Cells(i + 2, 12)
Exit For
End If
Next i
Next a
Sheets(2).Activate
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
Columns("C:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B17:B" & LR).Select
Selection.TextToColumns Destination:=Range("B17"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
Range("B17:R" & LR).Sort Key1:=Range("B17"), Order1:=xlAscending, DataOption1:=xlSortNormal
LR = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
Sheets(2).Select
Range("C17:C" & LR).Select
Selection.Copy
Sheets(1).Select
Range("B2").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets(2).Select
Range("B17:B" & LR).Select
Application.CutCopyMode = False
Selection.Copy
Sheets(1).Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets(2).Select
Range("F17:F" & LR).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Tabelle1").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets(2).Select
Range("O17:O" & LR).Select
Selection.Copy
Sheets(1).Select
Range("D2").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets(1).PrintOut
Application.Wait Now + TimeSerial(0, 0, 5)
Call drucken_sendungen
End Sub
Sub drucken_sendungen()
Dim bwd As Object, appword As Object
Dim pfad As String
Set appword = CreateObject("Word.Application")
appword.Visible = True
pfad = ThisWorkbook.Path
Set bwd = appword.documents.Open(pfad & "\Unterschriftenformular Spat.docx")
bwd.mailmerge.openDataSource Name:=ThisWorkbook.FullName, _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=0, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & pfad & ThisWorkbook.Name & "; Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Typ" _
, SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", SubType:=1
With bwd.mailmerge
.Destination = 1 'Druck in neues Dokument 1: Sofort auf Papier 0: Neue Datei
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = -300
End With
.Execute Pause:=False
End With
Call bwd.Close(SaveChanges:=False)
End Sub