Clever-Excel-Forum

Normale Version: Vorlage soll geschlossen werden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
in meiner Vorlage.xltm startet beim öffnen ein Inputfeld wo man den neuen Dateinamen eingeben kann, zb 123456. Dann wird sie mit .SaveAs als 123456.xlsm gespeichert.

Vorher wird geprüft ob die Datei schon vorhanden ist. Falls ja, dann wird sie  geöffnet und die Vorlage1 geschlossen. Siehe Teilcode:

Workbooks.Open Filename:=pfad2
ThisWorkbook.Close SaveChanges::=False

Es funktioniert alles gut.

Mein Problem ist, dass die Vorlage1 nicht geschlossen wird, wenn die 123456.xlsm von ein anderer User geöffnet ist (schreibgeschützt ist nicht erlaubt)

Workbook_Open()
If ThisWorkbook.ReadOnly Then
Msgbox "....in Bearbeitung, später versuchen..."
ThisWorkbook.Close False
End if

Ich möchte dass ausser 123456.xlsm auch die Vorlage1 geschlossen wird. Wie mache ich das am besten? Habe mit Makrorecorder versucht, es klappt nicht.

LG perostojkov
Hallo,

(12.12.2023, 00:54)perostojkov schrieb: [ -> ]in meiner Vorlage.xltm startet beim öffnen ein Inputfeld wo man den neuen Dateinamen eingeben kann, zb 123456. Dann wird sie mit .SaveAs als 123456.xlsm gespeichert.

zeige bitte das komplette Makro.

Gruß, Uwe
Hallo Uwe, 
ich kann nicht bzw es ist zu viel was alles da drin steht. Die Produkrionsrechner haben keinen Internetzugang, auch kein USB, ich tippe alles per Hand auf meinem Handy.

LG
Moin,

wenn ich das richtig verstanden habe, steht das Workbook-Open-Event in der Datei 123456. Falls das so ist, bezieht sich ThisWorkbook auf die 123456 und mit ThisWorkbook Close bleibt die Vorlage offen, es sei denn, du hast sie schon vor dem Öffnen der 123456 geschlossen.

Lösung: Arbeite vor dem Schließen der Vorlage mit dem Rückgabewert der .Open-Function und prüfe zuerst, ob die neu geöffnete Datei ReadOnly ist. Das geht entweder mit einer Objektvariablen oder in einem With-Block.

Viele Grüße
derHöpp
Danke, vorher prüfen ist mir nicht eingefallen.
Ist schon erledigt.


LG perostojkov
Verwende  

Code:
Workbooks.Add "template.xltm"

statt
Code:
workbooks.open "template.xltm"