Romero: Überprüfen, ob eine gewisse Excel-Mappe offen ist

Beitrag lesen

Hy unknown,

Das ist ja was ich nicht verstehe?
Bau doch ein paar Debugausgaben ein um zu prüfen welche Werte an Add übergeben werden.

Ich habe folgendes getestet:

Ich habe mir vor dem .Button.Add(Anfangsspalte(Application.Match(wsTarget.Name, arrSheets, 0) - 1), arrCounter(Application.Match(wsTarget.Name, arrSheets, 0) - 1), Buttonbreite, 15) die Parameter vorher ausgegeben und das sind Zahlen, welches die Position des Buttons wiederspiegeln.

Weiterhin habe ich mir, ohne das Makro über das Script aufzurufen (nur .Close() in JS), diese Werte ausgegeben und da wurde nur der Wert für den 1. Button angezeigt, dann die Fehlermeldung, dass die Add-Methode für das Button-Objekt nicht verwendet werden kann. Also das was bisher auch immer kam.

Nun habe ich danach diesen Makro-Ausführ-Befehl mittels Call unterbunden und das Makro aus meinem Script gestartet. Und siehe da, alle Buttons mit der dazugehörigen OnAction-Funktion klappt wunderbar.

Hat es was mit meinem Sub in der EXCEL-Mappe zu tun?
Es sieht da so aus:

Private Sub Workbook_BeforeClose(Cancel As Boolean)  
  
    Blattzähler_Ende = ThisWorkbook.Sheets.Count  
  
    'Array() bilden für die Blätter als Vergleich, ob sich Tab.-Namen verändert hat'  
    ReDim Blattanzahl_Ende(ThisWorkbook.Sheets.Count)  
    Dim ws As Worksheet, Blattnamen_Veränderung As String  
    Dim i As Integer, j As Integer  
    i = 0  
  
    For Each ws In ThisWorkbook.Worksheets  
        Blattanzahl_Ende(i) = ws.Name  
        i = i + 1  
    Next  
  
    'Vergleich der Blattnamen beim Öffnen und beim Schließen'  
    If Blattzähler_Start = Blattzähler_Ende Then  
        For j = LBound(Blattanzahl_Ende) To UBound(Blattanzahl_Ende)  
            If Blattanzahl_Start(j) <> Blattanzahl_Ende(j) Then  
                Blattnamen_Veränderung = "zutrefflich"  
            End If  
        Next  
    End If  
  
    If Blattzähler_Start <> Blattzähler_Ende Or Blattnamen_Veränderung = "zutrefflich" Then  
        'Call Buttonklick_A320.Buttons_erstellen'  
    End If  
  
End Sub

Je nachdem Veränderungen sind, egal ob veränderter Name oder Anzahl der Blätter sollen neue Buttons erstellt werden.

Aber nachdem der letzte Test erfolgreich war, kommt beim .Close() in JS, wieder die Meldung hoch mit dem Speichern.
Drücke ich das 1. mal auf JA passiert nix, dann diese Meldung wieder. Drücke da wieder auf JA und da kommt der Pfad zu meinen Eigenen Dateien und der Speichername der Datei lautet wie folgt: ":.xls".

Ich möchte, dass der Nutzer halt mind. 2 Möglichkeiten hat:
1.: ein Tabellenblatt händisch einfügen. Und dann sollen die Buttons jeweils für jedes Blatt dazu kommen.
2.: ein Tabellenblatt mittels einem Script (automatisch) erstellen, wo dann ebenfalls die Buttons für jedes Blatt erstellt werden.
Kann es sein, dass der Button im 2. Fall im Makro für den 1. Fall nich angelegt werden kann, weil er einmal vom Script und einmal vom Makro erstellt werden soll?

Die Buttons werden vorher alle gelöscht mit dem Aufruf des Makros.
Also egal, welchen Weg man da geht, es kommt zu keiner Überlappung oder Zuweisung gleicher OnAction für ein und denselben Button.

LG Romero