Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1356to1360
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

Excel-Absturz bei Ribbon-Aktualisierung

Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 12:43:02
Hendrik
Hallo zusammen,
folgenden Code habe ich aus den Seiten des Netzes kopiert, da ich in meinem Addin ein Ribbon ansprechen möchte:
Private Const NAMES_NAME = "Ribbon"
'Durch VBA7 wird auf 64-Bit-Version geprüft.
#If VBA7 Then
Public Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef destination As Any, _
ByRef source As Any, _
ByVal length As Long)
#Else
Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef destination As Any, _
ByRef source As Any, _
ByVal length As Long)
#End If
Public gobjRibbon As IRibbonUI
Public Sub onload(pobjRibbon As IRibbonUI)
Dim objName As Name
Set gobjRibbon = pobjRibbon
ThisWorkbook.Names.Add Name:=NAMES_NAME, RefersTo:=CStr(ObjPtr(pobjRibbon)), Visible:=False
End Sub
#If VBA7 Then
Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
#Else
Function GetRibbon(ByVal lRibbonPointer As Long) As Object
#End If
Dim objRibbon As Object
Call CopyMemory(objRibbon, lRibbonPointer, LenB(lRibbonPointer))
Set GetRibbon = objRibbon
Set objRibbon = Nothing
End Function
Public Sub refreshRibbon()
Dim objName As Name
If gobjRibbon Is Nothing Then
For Each objName In ThisWorkbook.Names
If objName.Name = NAMES_NAME Then
#If VBA7 Then
Set gobjRibbon = GetRibbon(CLngPtr(Mid$(objName.RefersTo, 2)))
#Else
Set gobjRibbon = GetRibbon(CLng(Mid$(objName.RefersTo, 2)))
#End If
Exit For
End If
Next
Set objName = Nothing
gobjRibbon.Invalidate
Else
gobjRibbon.Invalidate
End If
gobjRibbon.ActivateTab ("htbTab")
End Sub
Das funktioniert auf meinem Rechner auch prima. Wenn ich es aber auf dem Rechner eines Kollegen installiere, bricht es an der Stelle
Call CopyMemory(objRibbon, lRibbonPointer, LenB(lRibbonPointer))
ab. Und zwar ohne Fehlermeldung oder änliches, sondern mit einem Komplettaufhänger von Excel.
Leider verstehe ich die Stelle zu wenig, als das ich sie reparieren könnte. Was ist da wohl das Problem?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 12:44:09
Hendrik
Die Quellcode-Formatierung klappt hier auch eher so mäßig?!
Vielen Dank für die Hilfe!
Danke und Grüße
Hendrik

AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 12:49:45
mumpel
Hallo!
Die Quellcodedarstellung war hier schon immer schlecht. Eine Alternative wäre z.B. VBA-Code zur Darstellung in HTML aufbereiten
Was das Problem betrifft. Nutze statt diesem umfangreichen Code einfach mal "objRibbon.Invalidate" (wie in meinem Workshop beschrieben, z.B. bei "Umschaltflächen") und schütze das VBA-Projekt mit einem Kennwort.
Gruß, René

Anzeige
AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 13:59:04
Hendrik
Hallo René,
danke für das Feedback.
Ich habe jetzt folgenden Code:
Public objRibbon As IRibbonUI
Public Sub onload(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub

Public Sub refreshRibbon()
objRibbon.Invalidate
objRibbon.ActivateTab ("htbTab")
End Sub
Beim ausführen von refreshRibbon ist aber angeblich die Objektvariable oder With-Blockvariable nicht festgelegt. Was mache ich falsch und wie müsste der Code da lauten?
Danke!

AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 14:02:26
mumpel
Wie bereits sollte sich das Problem mit einem VBA-Kennwort lösen lassen. Du selber machst nichts falsch. Das ist einfach ein scheußlicher BUG.

Anzeige
AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 14:38:38
Hendrik
Hallo René, ein Kennwort ist gesetzt. :(

AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 14:48:53
mumpel
Funktioniert trotzdem nicht? Dann müsste ich mal in das Projekt schauen.

AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 15:04:04
Hendrik
René, kann ich Dir die Mappe mal mailen?
Meine Güte, dieses Forum ist schon etwas sehr gewöhnungsbedürftig, hm? Warum kann man nicht antworten, wenn man auf "Deine Beiträge" geht?!

AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 15:59:50
mumpel
Siehe Antwort im anderen Thread. ;)

AW: Excel-Absturz bei Ribbon-Aktualisierung
06.05.2014 14:35:51
Hendrik
Hallo René,
danke für das Feedback.
Ich habe jetzt folgenden Code:
Public objRibbon As IRibbonUI
Public Sub onload(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub

Public Sub refreshRibbon()
objRibbon.Invalidate
objRibbon.ActivateTab ("htbTab")
End Sub
Beim ausführen von refreshRibbon ist aber angeblich die Objektvariable oder With-Blockvariable nicht festgelegt. Was mache ich falsch und wie müsste der Code da lauten?
Danke!

Anzeige
Das liegt daran, dass du dich auf die Forums-...
06.05.2014 14:02:14
Luc:-?
…Automatik verlässt, Hendrik,
statt die dafür vorgesehenen pre-Tags (Button Code) zu benutzen!
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige