Hallo zusammen
Habe da ein sehr verzwicktes Problem, für das es bestimmt eine Lösung gibt.
Ich habe zwei ausgelagerte Funktionen in meinem Modul 1:
Diese sind wie wahrscheinlich schon bemerkt, dafür zuständig, Sheets zu schützen/freizugeben bzw. Spalten zu verstecken/sichtbar zu machen.
Nun habe ich zwei weitere Funktionen, die diese benutzen.
und
Nun kommt der Fehler:
Die Export_Click funktioniert tadellos, sie macht was sie soll und führt die 2 Funktionen richtig aus.
Die Output_Click allerdings bringt einen Fehlercode 400 sobald er die erste Funktion erreicht.
Wenn ich nun in den Debugmodus gehe und diese 4 Zeilen markiere:
Hidden = True
sichtbar (Hidden)
Protect = True
schuetze (Protect)
Dann führt er sie wie vorgesehen aus, ohne fehlercode.
Was steckt dahinter?
Info:
ich habe es schon mit
Application.Wait (Now + TimeValue("0:00:01"))
versucht mit den werten 1 Sec, 5 Sec, 10 Sec, um einfach auf Nummer sicher zu gehen, ob der Fehler bei der zu schnellen Abarbeitung liegt.
Hoffentlich weiss irgendjemand Rat, denn ich weiss keinen mehr =/
Habe da ein sehr verzwicktes Problem, für das es bestimmt eine Lösung gibt.
Ich habe zwei ausgelagerte Funktionen in meinem Modul 1:
Visual Basic-Quellcode
- Public Function schuetze(ByVal Protect As Boolean)
- Dim password As String
- password = ""
- If Protect = False Then
- Sheets("Bewerbungen").Unprotect (password)
- Sheets("Input Neu").Unprotect (password)
- Sheets("Archiv").Unprotect (password)
- Sheets("Parameter").Unprotect (password)
- Else
- Sheets("Input Neu").Protect (password)
- Sheets("Bewerbungen").Protect (password)
- Sheets("Parameter").Protect (password)
- Sheets("Archiv").Protect (password)
- End If
- End Function
- Public Function sichtbar(ByVal Hidden As Boolean)
- Sheets("Bewerbungen").Range("P:T,X:AC,AJ:BP,BY:CF").EntireColumn.Hidden = Hidden
- End Function
Diese sind wie wahrscheinlich schon bemerkt, dafür zuständig, Sheets zu schützen/freizugeben bzw. Spalten zu verstecken/sichtbar zu machen.
Nun habe ich zwei weitere Funktionen, die diese benutzen.
Visual Basic-Quellcode
- Sub Output_Click()
- Dim Hidden As Boolean
- Dim Protect As Boolean
- Dim strOldFile As String
- Dim strNewFile As String
- Dim book As String
- Dim zeile As String
- Dim GD() As String
- Dim GDZ() As String
- Dim AD() As String
- Dim KD() As String
- Dim TD() As String
- Dim AKD() As String
- Dim BSD() As String
- 'Parameter initialisieren
- Application.ScreenUpdating = False
- 'Flackern unterbinden
- zeile = ActiveCell.Row
- 'Ausgewählte Zeile hinterlegen
- Protect = False
- schuetze (Protect)
- Hidden = False
- sichtbar (Hidden)
- 'Entfernen des Blattschutzes und Sichtbarmachung aller Felder
- vorlage = "V:\Holding\Personal\Bewerbermanagement\Anwendungen\Vorlagen\BWM_Output_Vorlage.xlsx"
- verzeichnis = "V:\Holding\Personal\Bewerbermanagement\Anwendungen\Bewerbungen\"
- 'Orginalvorlage & Orginalverzeichnis
- GD = leseGD(zeile)
- GDZ = leseGDZ(zeile)
- AD = leseAD(zeile)
- KD = leseKD(zeile)
- TD = leseTD(zeile)
- AKD = leseAKD(zeile)
- BSD = leseBSD(zeile)
- 'lesemethoden
- StrPath = verzeichnis & GD(0) & "_" & GD(2) & "_" & GD(3) & "\"
- 'Erstellung der Verzeichniskennung
- If Not fctVerzeichnisExists(StrPath) Then
- MkDir StrPath
- ordner = "" & GD(0) & "_" & GD(2) & "_" & GD(3) & "\"
- Else
- ordner = "" & GD(0) & "_" & GD(2) & "_" & GD(3) & "\"
- End If
- 'Überprüft ob der Pfad existiert, wenn nicht wird er erstellt. Erstellt den Ordnerstring.
- book = "BW_" & GD(0) & "_" & GD(9) & "_" & GD(2) & "_" & GD(3) & ".xlsx"
- 'Workbook wird hinterlegt.
- strNewFile = verzeichnis & ordner & book
- 'Vollständiger Verzeichnispfad wird hinterlegt.
- FileCopy vorlage, strNewFile
- 'Kopiert die Vorlage und fügt sie in das neue Verzeichnis ein.
- Workbooks.Open Filename:=strNewFile
- 'Öffnet das neue Workbook
- password = ""
- Workbooks(book).Sheets("Ansicht").Unprotect (password)
- schreibeGD GD, book
- schreibeGDZ GDZ, book
- schreibeAD AD, book
- schreibeKD KD, book
- schreibeTD TD, book
- schreibeAKD AKD, book
- schreibeBSD BSD, book
- 'schreibemethoden inklusive workbookübergabe.
- With Workbooks("BWM_ASAP.xlsm").Sheets("Bewerbungen")
- .Hyperlinks.Add Anchor:=.Range("A" & zeile), _
- Address:=verzeichnis & ordner, _
- TextToDisplay:=GD(0)
- End With
- 'Erstellt den Hyperlink auf den Ordner
- With Workbooks("BWM_ASAP.xlsm").Sheets("Bewerbungen")
- .Hyperlinks.Add Anchor:=.Range("C" & zeile), _
- Address:=strNewFile, _
- TextToDisplay:=GD(2)
- End With
- 'Erstellt den Hyperlink auf die Datei
- With Workbooks(book).Sheets("Ansicht")
- .Hyperlinks.Add Anchor:=.Range("B3"), _
- Address:=verzeichnis & ordner
- End With
- Workbooks(book).Sheets("Ansicht").Protect (password)
- Workbooks(book).Save
- 'Workbooks(book).Sheets("Ansicht").PrintOut
- Workbooks(book).Close
- 'Speichert und schliesst das Workbook
- MsgBox "Datei erfolgreich exportiert!"
- Application.Wait (Now + TimeValue("0:00:01"))
- Hidden = True
- sichtbar (Hidden)
- Application.Wait (Now + TimeValue("0:00:01"))
- Protect = True
- schuetze (Protect)
- 'Verstecken von Feldern und Schützen der Sheets
- Application.ScreenUpdating = True
- 'Ansicht wird aktuallisiert
- End Sub
und
Visual Basic-Quellcode
- Sub Export_Click()
- Dim zeilenzahl As Integer
- Dim strOldFile As String
- Dim strNewFile As String
- Dim book As String
- Dim Hidden As Boolean
- Dim Protect As Boolean
- Dim Wert As String
- 'Parameter initialisieren
- zeilenzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
- Application.ScreenUpdating = False
- 'Flackern unterbinden
- Protect = False
- schuetze (Protect)
- Hidden = False
- sichtbar (Hidden)
- 'Entfernen des Blattschutzes und Sichtbarmachung aller Felder
- vorlage = "V:\Holding\Personal\Bewerbermanagement\Anwendungen\Vorlagen\BWM_Export_Vorlage.xlsm"
- verzeichnis = "V:\Holding\Personal\Bewerbermanagement\Anwendungen\Exporte\"
- 'Orginalvorlage & Orginalverzeichnis
- Wert = InputBox("Bitte Niederlassungskürzel eingeben(Bsp. HN=Heilbronn):", "Niederlassung")
- StrPath = verzeichnis & Wert & "\"
- 'Erstellung der Verzeichniskennung
- If Not fctVerzeichnisExists(StrPath) Then
- MkDir StrPath
- ordner = "" & Wert & "\"
- Else
- ordner = "" & Wert & "\"
- End If
- 'Überprüft ob der Pfad existiert, wenn nicht wird er erstellt. Erstellt den Ordnerstring
- book = "BWExport_" & Wert & "_" & Date & ".xlsm"
- 'Workbook wird hinterlegt
- strNewFile = verzeichnis & ordner & book
- 'Vollständiger Verzeichnispfad wird hinterlegt
- FileCopy vorlage, strNewFile
- 'Kopiert die Vorlage und fügt sie in das neue Verzeichnis ein
- Workbooks.Open Filename:=strNewFile
- 'Öffnet das neue Workbook
- password = ""
- Workbooks(book).Sheets("Export").Unprotect (password)
- ExportSchreibePartA book, zeilenzahl
- ExportSchreibePartB book, zeilenzahl
- ExportSchreibePartC book, zeilenzahl
- Workbooks(book).Save
- Workbooks(book).Close
- 'Speichert und schliesst das Workbook
- MsgBox "Datei: " & book & " erfolgreich erstellt!"
- Hidden = True
- sichtbar (Hidden)
- Protect = True
- schuetze (Protect)
- 'Verstecken von Feldern und Schützen der Sheets
- Application.ScreenUpdating = True
- 'Ansicht wird aktuallisiert
- End Sub
Nun kommt der Fehler:
Die Export_Click funktioniert tadellos, sie macht was sie soll und führt die 2 Funktionen richtig aus.
Die Output_Click allerdings bringt einen Fehlercode 400 sobald er die erste Funktion erreicht.
Wenn ich nun in den Debugmodus gehe und diese 4 Zeilen markiere:
Hidden = True
sichtbar (Hidden)
Protect = True
schuetze (Protect)
Dann führt er sie wie vorgesehen aus, ohne fehlercode.
Was steckt dahinter?
Info:
ich habe es schon mit
Application.Wait (Now + TimeValue("0:00:01"))
versucht mit den werten 1 Sec, 5 Sec, 10 Sec, um einfach auf Nummer sicher zu gehen, ob der Fehler bei der zu schnellen Abarbeitung liegt.
Hoffentlich weiss irgendjemand Rat, denn ich weiss keinen mehr =/