Eigene Symbolleiste (VBA-Code anbei) öffnet Ersteller-Datei

15/05/2008 - 15:42 von Andreas Höfle | Report spam
Hi,

meine benutzerdefiniert Symbolleiste (mit VBA Code erstellt wenn sie nicht
in der *.xlb des Rechners vorhanden ist) öffnet beim Anklicken eines Buttons
jedesmal die Datei die zuletzt gespeichert wurde. Existiert die Leiste wird
sie nur eingeblendet.
Genauer:
(Symbolleiste existiert noch nicht auf dem Rechner)
1) Mappe1 erstellen mit meiner Vorlage (Symbolleiste wird angelegt)
2) Mappe1 speichern unter Mappe 2
2.1) Mappe2 schliessen u. in Mappe1 ein Button meiner Leiste anklicken:
Bevor die hinterlegte Prozedur ausgeführt wird öffnet sich Mappe2
3.) Mappe2 speichern unter Mappe3
3.1) Mappe1 u. Mappe 2 öffnet Mappe3 wenn ich in M1 od. M2 die Leiste benutze
Aber: Mappe1 speichern unter Mappe4: beide öffnen Mappe3

Hoffe das ist halbwegs verstàndlich ;-)
Verstehe nicht wieso hier die zuletzt "Gespeichert unter" Datei geöffnet wird.
Sicher mein Fehler also hier der Code:

'Alte od. nicht vorhandene Menüleiste wird neu angelegt
Sub CheckRfqCommandBar()
Dim bolCBarCheck As Boolean
Dim i As Integer
Static strCBarName As String

strCBarName = "Request for Quotation"
bolCBarCheck = False

'Prüfen ob Menüleiste "Request for Quotation
'in "Excel[Version].xlb" vorhanden ist
For i = 1 To Application.CommandBars.Count
If Application.CommandBars(i).Type = msoBarTypeNormal Then
If Application.CommandBars(i).Name = strCBarName Then
bolCBarCheck = True 'Symbolleiste vorhanden
End If
End If
Next i

'Versionscheck der Leiste über Buttonanzahl
If bolCBarCheck = True Then
CompareButtonCount
'Alte Version, d.h. alte löschen u. neue anlegen
If bolButtonDiffer = True Then 'Public Variable
DeleteRfqCommandBar
CreateRfqCommandBar
End If
Else
CreateRfqCommandBar
End If
End Sub


Sub CreateRfqCommandBar()
Dim cmb As CommandBar

Set cmb = Application.CommandBars.Add(Name:="Request for Quotation", _
Position:=msoBarTop)

With cmb
' Eigene Symbole erzeugen:
' 1.) Legende ein- u. ausblenden
With .Controls.Add(Type:=msoControlButton)
.Caption = "Legende" ' Quickinfo
.FaceId = 487 ' Symbol Info
.OnAction = "ShowHideLegend" ' Prozedur
.TooltipText = "Legende an/aus"
End With
...usw.

Sub CompareButtonCount()
Dim i As Integer
Dim bytItemOld As Byte
Const bytItemNew As Byte = 7 'ACHTUNG: Beim Hinzufügen von
'Buttons manuell erhöhen!!

With Application.CommandBars("Request for Quotation")
bytItemOld = .Controls.Count
If bytItemOld <> bytItemNew Then
bolButtonDiffer = True
Else
bolButtonDiffer = False
End If
End With
End Sub

Hoffe dabei kann mir jemand helfen.
Danke im Vorraus,
Andreas
 

Lesen sie die antworten

#1 Eric March
15/05/2008 - 18:33 | Warnen spam
Andreas Höfle notierte letztens:
Hi,



[CUT] siehe unten

Hoffe das ist halbwegs verstàndlich ;-)
Verstehe nicht wieso hier die zuletzt "Gespeichert unter" Datei geöffnet wird.
Sicher mein Fehler also hier der Code:

'Alte od. nicht vorhandene Menüleiste wird neu angelegt
Sub CheckRfqCommandBar()
Dim bolCBarCheck As Boolean
Dim i As Integer
Static strCBarName As String

strCBarName = "Request for Quotation"
bolCBarCheck = False

'Prüfen ob Menüleiste "Request for Quotation
'in "Excel[Version].xlb" vorhanden ist
For i = 1 To Application.CommandBars.Count
If Application.CommandBars(i).Type = msoBarTypeNormal Then
If Application.CommandBars(i).Name = strCBarName Then
bolCBarCheck = True 'Symbolleiste vorhanden
End If
End If
Next i

'Versionscheck der Leiste über Buttonanzahl
If bolCBarCheck = True Then
CompareButtonCount
'Alte Version, d.h. alte löschen u. neue anlegen
If bolButtonDiffer = True Then 'Public Variable
DeleteRfqCommandBar
CreateRfqCommandBar
End If
Else
CreateRfqCommandBar
End If
End Sub


Sub CreateRfqCommandBar()
Dim cmb As CommandBar

Set cmb = Application.CommandBars.Add(Name:="Request for Quotation", _
Position:=msoBarTop)

With cmb
' Eigene Symbole erzeugen:
' 1.) Legende ein- u. ausblenden
With .Controls.Add(Type:=msoControlButton)
.Caption = "Legende" ' Quickinfo
.FaceId = 487 ' Symbol Info
.OnAction = "ShowHideLegend" ' Prozedur
.TooltipText = "Legende an/aus"
End With
usw.

Sub CompareButtonCount()
Dim i As Integer
Dim bytItemOld As Byte
Const bytItemNew As Byte = 7 'ACHTUNG: Beim Hinzufügen von
'Buttons manuell erhöhen!!

With Application.CommandBars("Request for Quotation")
bytItemOld = .Controls.Count
If bytItemOld <> bytItemNew Then
bolButtonDiffer = True
Else
bolButtonDiffer = False
End If
End With
End Sub

Hoffe dabei kann mir jemand helfen.
Danke im Vorraus,
Andreas




Könnte sein, dass ich etwas müde bin…
Und ich habe den Code nicht auseinandergepuzzelt…

öffnet beim Anklicken eines Buttons
jedesmal die Datei die zuletzt gespeichert wurde.



Aha. Sofort die Frage was passiert wenn es diese Datei nicht gibt.
Physisch zum Einen, Logisch wenn die Liste der Dateien (unsere MRU)
diese Info nicht enthàlt.

1) Mappe1 erstellen mit meiner Vorlage (Symbolleiste wird angelegt)



Augenblick; soll nebenher heißen, dass Mappe1 auch rein pràventiv diesen
Leistencode hàlt?!

2) Mappe1 speichern unter Mappe 2
2.1) Mappe2 schliessen u. in Mappe1 ein Button meiner Leiste anklicken:



Huch? 1 SaveAs 2, 2 Close == keine 1 mehr da.
Denkfehler bei mir?

Bevor die hinterlegte Prozedur ausgeführt wird öffnet sich Mappe2



Hinterlegt..? Wer, was und wo?

3.) Mappe2 speichern unter Mappe3
3.1) Mappe1 u. Mappe 2 öffnet Mappe3 wenn ich in M1 od. M2 die Leiste


benutze
Aber: Mappe1 speichern unter Mappe4: beide öffnen Mappe3



Erscheint mir von außen nicht unlogisch wenn 3 irgendwie in der
Letzte-Datei-Liste auftaucht und sich dort für das Wiederöffnen bedient
wird.
Mir ist so ein Chaos aus Word wie Ecxel absolut bekannt. Offen und
gespeicherte Dateine sind plötzlich doch nicht in der Liste.


Wenn ich nun fragen darf - cui bono? Was nützt diese Funktion in der
Praxis eine eben geschlossene Datei (sic) per Knopfdruck wieder zu
öffnen statt die Dateiliste zu bemühen?


Eric March - eric.march(spambremse)@gmx.net

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.«
„Die Geschichte ist der beste Lehrmeister - mit den unaufmerksamsten
Schülern.“ Indira Gandhi

Ähnliche fragen