folgendes Problem plagt mich. Ich ersetze in einem Excel bestimmte Strings in einer Schleife (mit nachfolgendem Code). Das klappt auch soweit allerdings mit zwei Bugs:
Sub ExcelDokumentöffnen()
Dim strText, AppID As String
Dim Wsh As Worksheet
Dim Dokumente As String
Dokumente = "Pfad des Dokuments"
Application.DisplayAlerts = False
Workbooks("NameWorkbook").Activate
AppID = ActiveWorkbook.Sheets("Eingabefenster").Range("B8").Value
strText = ActiveWorkbook.Sheets("Eingabefenster").Range("B18").Value
Workbooks.Open ("Ansprechen des Pfads")
For Each Wsh In ActiveWorkbook.Worksheets
Wsh.UsedRange.Replace "xxxx", strText, xlPart
Application.DisplayAlerts = False
Next
strText = "ID:" & ID2
For Each Wsh In ActiveWorkbook.Worksheets
Wsh.UsedRange.Replace "ID", strText, xlPart
ActiveWorkbook.Close SaveChanges:=True
Next
ThisWorkbook.Save
ThisWorkbook.Close
End Sub
1. schließt Excel mein Dokument nicht nur nicht, sondern numeriert es am Ende auch nochmal mit einer Numme, sprich: Dokument+Nummer.Endung. Mein Befehl "ThisWorkbook.Save
ThisWorkbook.Close" Wird also nicht befolgt.
2. Ruft Excel eine Private Sub auf, welche ich allerdings nicht geschrieben habe.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim strFileName As String
strFileName = ""zu ersetzender Text""
If SaveAsUI Then
Cancel = True
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show strFileName
Application.EnableEvents = True
Application.DisplayAlerts = True
End If
End Sub
Weiß jemand woher die Sub kommt? Bzw wieso Excel so etwas von selbst anlegt?
Mein Ziel ist also, dass das Dokument sich am Schluss nach der Ersetzung speichert.
Ich danke euch für euren Input.
VG