Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

RibbonFehler bei Aufruf von 3.Datei

RibbonFehler bei Aufruf von 3.Datei
17.05.2020 01:40:32
3.Datei
Vorab: Da ich vermute, dass volti und mumpel mitlesen :
Ich möchte mich noch bei bei euch, Rene und Karl-Heinz, bedanken.
Mit euren Hilfen konnte ich mein Problem mit der EditBox (Ribbon Editbox o. Label per VBA ändern) löschen.
@ KH: Das Code mit dem RefreshRibbon - genial. Vielen herzlichen Dank.
Jetzt hänge ich an folgenden Problem fest:
Der RibbonCode wird primär über ein AddIn geladen.
Alle Aufrufen wie Bearbeiten von Daten / Einbinden von externen Daten / öffnen von 3.Dateien geht ohne Probleme.
Da ich aber die ganze Entwicklung in einer xlsm mache und dann nur per Code hin und wieder das AddIn wegschreibe falle ich jetzt beim Aufruf einer Exceldatei
Aufruf über
If Right(strFile, 3) = "csv" Then
Workbooks.Open Filename:=sPfad & "\" & strFile, Local:=True, delimiter:=";"
Else
Workbooks.Open Filename:=sPfad & "\" & strFile ', Local:=True
End if 

über folgenden Fehler: Dieser tritt nicht auf, wenn ich den Code über das AddIn öffne, nur wenn ich es aus der xlsm aufrufen. Beim Öffnen der Datei kommt
- "Das Makro 'GetVisible' kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar oder alle Makros wurden deaktiviert"
und anschliessend
- "Das Makro 'GetEnabled' kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar oder alle Makros wurden deaktiviert"
Und das geht abwechselt so lang, bis in meiner Datei, über das den Code gestartet habe, sämtliche eigenen Ribbons weg sind.
Aus meinem Verständnis heraus versucht ein Event o.ä. die beiden Makros, die Teil meiner Ribbons sind (aufgerufen über)
Public Sub OnRibbonLoad(lpRibbon As IRibbonUI)
Set gobjRibbon = lpRibbon       'globalen Pointer setzen und in einem Namen sichern
ThisWorkbook.Names.Add Name:="MyRibbon", _
RefersTo:=CStr(ObjPtr(lpRibbon)), Visible:=False
End Sub

GetVisible und GetEnabled aufzurufen. Das geht aber nicht, da die ja nicht das sind.
Hat jemand ne Idee, wie ich verhindern kann, das die Fehlermeldung aufpoppt und mir die Ribbons in meine Datei rausfliegen?
Ich hatte die Idee, das kontrolliert wird, ob es sich um die xlsm oder das AddIn handelt und das "was" gemacht wird oder eben nicht.
Aber da bin ich auch gescheitert.
Gruß Markus

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: RibbonFehler bei Aufruf von 3.Datei
17.05.2020 09:29:05
3.Datei
Hallo Markus,
vielen Dank für Deine positive Rückmeldung und Gratulation zum Erfolg....
Dein geschildertes Problem kann ich nur anhand der Prosa nicht nachvollziehen.
Ich habe auch Ribbons in AddIns und auch der Betrieb mehrerer Dateien mit eigenen Ribbons funktioniert tadellos.
Wenn das Makro GetEnabled nicht ausgeführt werden kann, ist es wahrscheinlich nicht dort, wo es erwartet wird.
Befindet sich in der xlsm-Datei ein eingebettetes Ribbon, im VBA-Bereich der xlsm-Datei jedoch kein entsprechendes Makro GetEnabled?
Jeder Ribbon in jeder Datei ruft natürlich die Get-Makros in seiner eigenen Datei auf.
M.E. kannst Du daher die Fehlermeldung auch nicht verhindern, sie kommt nach Aufruf durch das Ribbon-Objekt, und wenn Du es könntest, wärst Du ja keinen Schritt weiter, da die Aktionen ja nicht ausgeführt werden.
Fazit: Ribbon und Code der xlsm-Datei haben zunächst einmal mit Ribbon und Code der xlam-Datei nichts zu tun, beide müssen auch die entsprechenden VBA-Codes enthalten. Ist das so bei Dir?
Was allerdings passiert, wenn man zwei Dateien aufmacht, die haargenau die gleichen Controls enthalten, weiß ich jetzt nicht. Werden die dann doppelt dargestellt? Habe ich noch nie probiert.
Ich lasse diesen Thread mal offen....
viele Grüße
Karl-Heinz
Anzeige
AW: RibbonFehler bei Aufruf von 3.Datei
17.05.2020 09:39:17
3.Datei
Hallo zusammen,
Wenn das AddIn geladen ist und dann das .xlsm (aus welchem da AddIn erstellt wurde) geöffnet wird, sind beide Ribbons geladen. Genau diese Fehler kommen dann durch deren Interferenz zustande. Vor dem Öffnen/Bearbeiten/Testen,Speichern/Speichern als...xlam des Quellcode.xlsm sollte darum immer das AddIn vorher entladen bzw. ausgeschaltet und erst nach der Speicherung als wieder geladen/eingeschaltet werden.
Gruess Hansueli
AW: RibbonFehler bei Aufruf von 3.Datei
17.05.2020 09:53:30
3.Datei
Kleiner Tipp:
Das Onload-Ereignis sollte in jeder Datei einen anderen Namen haben.
AW: RibbonFehler bei Aufruf von 3.Datei
17.05.2020 23:24:08
3.Datei
Hallo zusammen,
Das Problem hab ich vermutlich nicht exakt genug beschreiben.
Ich habe mehrere Dateien
1: Meine "Master"-Version. Das ist ne einfache xlsm.
Das ist quasi meine Entwicklungsumgebung, in der ich meine ganzen Codes entwickel und dann, wenn ich einen Schritt weiter bin, die per Knopfdruck abspeichere.
In dem Moment wird die Versionsnummer der Master erhöht, z.b. von 3.15.10 auf 3.15.11, und diese dann als solche weggespeichert. Zusätzlich wird auch gleich eine Version als AddIn weggeschrieben.
Weiterhin wird, wenn ein entsprechendes AddIn vorhanden ist, dieses entladen und das neuen Add-IN wieder eingebunden. Da aber das Addin 3 Reiter hat, hab ich dann auf einmal 6 davon (3x vom xlsm und 3 vom geladenen AddIn). Daher entbinde ich normalerweise das AddIn wieder und arbeite in der xlsm. Ich selbst hab es bisher nicht geschafft, nur im AddIn zu arbeiten und meine Vorschritte zu sichern. Geht wohl auch nicht als Add In.
2:
Diese Datei ruft aber nicht nur Funktionen innerhalb der eigenen Datei auf sondern stellt die Möglichkeit bereit, Dateien, die täglich oder fast täglich auf Servern aktualisiert werden zu öffnen. Das sind so gute 20 verschiedene CSV-Dateien und 10 Exceldateien.
Daher auch der Code
If Right(strFile, 3) = "csv" Then
Workbooks.Open Filename:=sPfad & "\" & strFile, Local:=True, delimiter:=";"
Else
Workbooks.Open Filename:=sPfad & "\" & strFile ', Local:=True
End if
der auf eine CSV hindeutet.
Daher klappt das leider nicht, diesen Dateien noch ein xml-Schema mit getvisible etc zu verpassen.
Das Neuladen der "verlorenen" Ribbons hab ich ja über den RefreshRibbon-Aufruf hinbekommen.
Jetzt muss ich eben irgendwie dem System beibringen, das die Prüfung / Durchlaufen der Ribbons doch bitte schön nicht stattfindet, wenn THISWORKBOOK als Endung ne xlsm ist.
Die Fehlermeldungen über
Application.DisplayAlerts = False
Application.EnableEvents = False
zu blocken geht auch nicht.
Mein einziger Ansatz wäre jetzt, an den Stellen im RibbonCode, der den Fehler auslöst ne Prüfung einzubauen wie 5 Zeilen weiter oben beschrieben :(
Anzeige
AW: RibbonFehler bei Aufruf von 3.Datei
18.05.2020 00:23:35
3.Datei
So - Nachtrag:
ich hab jetzt noch meine Idee probiert, den Enable/getvisible Aufruf abzufangen, der den Fehler produziert.
Hierzu hab ich eine folgende Variable erstellt: Public STR_GETVISIBLE As String
und in den RibbonAufruf eingebaut
Case "btn_1011"
STR_GETVISIBLE = "1"
Debug.Print "STR_GETVISIBLE a : " & STR_GETVISIBLE
btn_1011_ListeA_öffnen
Debug.Print "STR_GETVISIBLE b: " & STR_GETVISIBLE
In wirklich jeden Call kam als oberste Zeile
If STR_GETVISIBLE = "1" Then Exit Sub
Ergebniss:
- Datei wird aufgerufen
- die 2 Debug.Prints werden schön mit 1 angezeigt
- und es läuft alles wieder gegen die Fehlerkette
Kann man die Aufrufe der Calls nicht verhindern?
Langsam glaube ich, das ich damit leben muss....
Anzeige
AW: RibbonFehler bei Aufruf von 3.Datei
18.05.2020 00:25:24
3.Datei
Beitrag lass ich mal offen - vielleicht gibts ja noch ein Ansatz :(
AW: RibbonFehler - CustomUI per VBA
18.05.2020 09:12:34
MLoew
Da der Fehler wohl daran liegt, das die Dateien eine CustomUI-Umgebung vermissen, gibt es die Möglichkeit, eine Art Grundgerüst dazu jeder zu öffnenden Datei mitzugeben?
So ähnlich wie ich ein Modul von einer Datei in eine andere Datei kopieren kann?
AW: RibbonFehler - CustomUI per VBA
18.05.2020 09:34:19
MLoew
Rene, KH
wenn ihr hier mitlest, vielleicht habt ihr hierfür eine Erklärung.
Ich hab jetzt - total unbewusst - eine von den besagten Exceldateien geöffnet, die ich noch über die Menüleiste aufrufe. Nur DEN Code hab ich zu einem anderen Zeitpunkt geschrieben. Oder besser, aus einem älteren Code von mir einfach rauskopiert.
Dabei hab ich die Datei wie folgt aufgerufen, und zwar OHNE FEHLER
Shell "C:\WINDOWS\explorer.exe """ & strPath & "", vbNormalFocus
Der Code, wo die Fehler erzeugt wurde war
If Right(strFile, 3) = "csv" Then
Workbooks.Open Filename:=sPfad & "\" & strFile, Local:=True, delimiter:=";"
Else
Workbooks.Open Filename:=sPfad & "\" & strFile ', Local:=True
End If
OK, hier scheint auf jeden Fall der Lösungsansatz darin zu liegen.
Aber so richtig verstehen tu ich es trotzdem nicht.
Anzeige
AW: RibbonFehler - CustomUI per VBA
18.05.2020 14:09:13
MLoew
Ich hab jetzt mal weiter getestet und - zumindest für mich - jetzt ne Lösung gefunden.
Das das Problem an dem workbook.open - Aufruf wohl liegt habe ich mich weiter auf den Shell-Aufruf konzentriert.
Nach einigem Rumbasteln habe ich jetzt einen funktionierenden Aufruf:
Shell "C:\WINDOWS\explorer.exe C:\Verzeichnis\Daten.csv, delimiter:=" & """" & ";" & """" 
Oder eben so
Sub test()
Dim AF: AF = Chr(34)                                    'Anführungszeichen"
Dim LS: LS = " "                                         'Leerstelle
Dim Aufruf
Dim sLW, spfad
Dim strfile
sLW = "C:"
spfad = "\VERZEICHNIS\"
strfile = "DATEN.csv"
Aufruf = vbNullString
Aufruf = Aufruf & "C:\WINDOWS\explorer.exe "
Aufruf = Aufruf & sLW
Aufruf = Aufruf & spfad
Aufruf = Aufruf & strfile
Aufruf = Aufruf & "," & LS
Aufruf = Aufruf & "delimiter:="
Aufruf = Aufruf & AF & ";" & AF
Debug.Print Aufruf
Shell Aufruf
End Sub

Rene/KH.
Nochmal vielen herzlichen Dank für eure Hilfe.
Anzeige
AW: RibbonFehler bei Aufruf von 3.Datei
18.05.2020 11:11:20
3.Datei
Du könntest mit "ActiveWorkbook.Name" den Namen Deiner Entwicklungsdatei abfragen.
If Not ActiveWorkbook.Name = "MeinTest.xlsm" Then objRibbon.Invalidate
AW: RibbonFehler bei Aufruf von 3.Datei
18.05.2020 14:29:43
3.Datei
Werde ich noch probieren. Danke dir.
Das Problem hat mich jetzt echt einige Nächte gekostet :)
Aber immerhin hab ich jetzt auch noch ne Lösung ohne ein objRibbon.Invalidate.
Werde ich aber auf jeden Fall ausprobieren.
Final hab ich jetzt aber ne funktionierenden Code :

Dim AF: AF = Chr(349
Dim LS: LS = " "
If Right(strfile, 3) = "csv" Then
Aufruf = vbNullString
Aufruf = Aufruf & "C:\WINDOWS\explorer.exe "
Aufruf = Aufruf & spfad
Aufruf = Aufruf & "\"
Aufruf = Aufruf & strfile
Aufruf = Aufruf & "," & LS
Aufruf = Aufruf & "delimiter:="
Aufruf = Aufruf & AF & ";" & AF
Else
Aufruf = vbNullString
Aufruf = Aufruf & "C:\WINDOWS\explorer.exe "
Aufruf = Aufruf & spfad
Aufruf = Aufruf & "\"
Aufruf = Aufruf & strfile
Aufruf = Aufruf & "," & LS
Aufruf = Aufruf & "vbNormalFocus"
End If
Debug.Print Aufruf
Shell Aufruf

für alle, die vor dem gleichen Problem stehen wie ich es hatte.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige