Testen, ob eine Arbeitsmappe geöffnet ist (Microsoft Excel)
Brian hat eine komplexe Arbeitsmappe, die andere unterstützende Arbeitsmappen sehr kurz öffnet und dann schließt, um Änderungen zu speichern. Er hat ein Büro mit drei Personen, die seine Makros verwenden, und gelegentlich kommt es zu einem Konflikt, bei dem zwei Personen versuchen, eine purchase order || zu erhalten ||| Nummer zur gleichen Zeit. Dies führt dazu, dass die PO-Arbeitsmappe zum zweiten Mal im schreibgeschützten Modus geöffnet wird, was für Benutzer verwirrend ist. Brian fragt sich, ob es eine Zeile mit VBA-Code gibt, die den Befehl „Arbeitsmappe öffnen“ stoppt, wenn die Zielarbeitsmappe bereits von einem anderen Benutzer geöffnet wurde. Auf diese Weise konnte er potenzielle Probleme erkennen, bevor sie auftreten.
Es ist viel einfacher, Ihren Code nach dem Öffnen überprüfen zu lassen, ob die Arbeitsmappe im schreibgeschützten Modus geöffnet wurde. Wenn dies der Fall ist, können Sie eine Ihrer Situation entsprechende Maßnahme ergreifen. (Sie können beispielsweise die Arbeitsmappe schließen, eine kurze Zeit warten und den Vorgang wiederholen und testen.) So können Sie den schreibgeschützten Status überprüfen:
Set wkBook1 = Workbooks.Open("c:\MyBigBook.xlsx") If wkBook1.ReadOnly Then wkBook1.Close False End If
Beachten Sie, dass es die ReadOnly-Eigenschaft ist, die die gewünschten Informationen liefert. Wenn Sie die Datei vorab überprüfen müssen, können Sie versuchen, einige der in VBA verfügbaren Dateizugriffsanweisungen zu verwenden. Das macht die folgende Funktion.
Function FileIsLocked(strFileName As String) As Boolean FileIsLocked = False On Error Resume Next Open strFileName For Binary Access Read Write Lock Read Write As #1 Close #1 ' If an error occurs, the document is currently open If Err.Number <> 0 Then FileIsLocked = True Err.Clear End If End Function
Um die Funktion zu verwenden, übergeben Sie ihr den Namen (einschließlich des vollständigen Pfads) der Arbeitsmappe, die Sie überprüfen möchten. Die Funktion gibt True zurück, wenn die Datei gesperrt ist, und False, wenn dies nicht der Fall ist. Denken Sie jedoch daran, dass diese Funktion von dem Zeitpunkt, an dem diese Funktion die Datei überprüft, bis zu dem Zeitpunkt, an dem Sie tatsächlich versuchen, die Datei zu öffnen, möglicherweise von einer anderen Person geöffnet wurde. Daher ist der erste Ansatz (Überprüfung nach dem Versuch zu öffnen) möglicherweise der beste Ansatz.)
Es ist auch zu beachten, dass Sie die anderen Arbeitsmappen auch als freigegebene Arbeitsmappen speichern können. Dies würde es ihnen ermöglichen, von mehreren Benutzern ohne Probleme geöffnet zu werden. Natürlich möchten Sie überprüfen, wie sich dieser Ansatz auf die Daten auswirkt, die Sie möglicherweise in den Arbeitsmappen speichern möchten.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
link: / excelribbon-ExcelTipsMacros [Klicken Sie hier, um diese spezielle Seite in einem neuen Browser-Tab zu öffnen]
.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (5831) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.