Noch etwas: Ich habe ein Korrektur-Makro entworfen, das in einer geöffneten Datei einiges verändert. Jetzt möchte ich, dass mein Korrektur-Makro ein Makro in die geöffnete Datei einbindet. So soll zum Beispiel das Schließen der geöffneten Datei nur noch möglich sein, wenn eine bestimmte Zelle auf einem bestimmten Tabellenblatt ausgefüllt ist.
Wie erreiche ich das?
Vielen Dank,
MAtthes
Hallo Matthes,
zunächst mal folgendes: Wenn du Code von einer in eine andere Mappe kopierst, wird sich sofort dein Antivirenprogramm melden (wenn es ein vernünftiges ist, bzw. wenn du überhaupt eines hast).
Der folgende Code muss in "DieseArbeitsmappe" deiner Ursprungsdatei rein. Er verhindert, dass die Mappe geschlossen wird, wenn nicht in A5 OK drin steht:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("Tabelle1").Range("A5") <> "OK" Then
Cancel = True
End If
End Sub
Du musst natürlich den Tabellenblattnamen und den Rangebereich anpassen.
In ein allgemeines Modul deiner Ursprungsmappe muss folgender Code:
Sub code_copy()
Dim i As Integer
Dim scode As String
With ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule
scode = .Lines(1, .CountOfLines)
End With
Workbooks("Test.xls").VBProject.VBComponents("DieseArbeitsmappe").CodeModule.AddFromString scode
End Sub
Der kopiert den Code deiner Ursprungsdatei von "DieseArbeitsmappe" in die andere offene Datei. Bei mir heißt die eben Test.xls. Musst du noch anpassen.
Hoffe es hilft.
Gruß
Ralf