Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Kniffeliges Makro zum Datei Öffnen





Frage

Guten Morgen ihr lieben Excel-Bastler, ich bastle jetzt seit einigen Tagen an einem kleinen Programm und komme nicht mehr weiter. Ziel ist es, eine Menüleiste in Excel zu erstellen, die verschiedene Dateien öffnet. Soweit eigentlich kein Problem. Jetzt sind mir natürlich nicht die Dateien bekannt, die geöffnet werden sollen, da die Datei nicht für mich bestimmt ist. In einem Sheet sollen die jeweiligen Benutzer den Pfad und Dateinamen eintragen, auf ein Knöpfchen drücken und das Ding soll laufen. Mein Problem liegt darin, den Schaltflächen den Befehl zum Öffnen zu geben, da die Methode .OnAction nur den Namen eines Makros akzeptiert bzw. eine Variable, die einen solchen enthält. Ich kann also nicht innerhalb einer Schleife den Befehl .OnAction=Workbooks.Open(Variable) eingeben. Nachfolgend der Code. [Code] Dim KFMenue Sub Menüleiste_FSJ_neu() 'Version 1.02 'Datum 25.10.2004 'Erstellt von Kevin Flödl Application.CommandBars.Add(Name:="FSJ Dateimenü").Visible = True Set KFMenue = CommandBars("FSJ Dateimenü") With KFMenue .Visible = True .Position = msoBarBottom End With schalter_FSJMenue End Sub Sub schalter_FSJMenue() 'Version 1.05 'Datum 26.10.2004 'Erstellt von Kevin Flödl 'Spalte A enthält eine Lfd.Nr für die Gruppen 'Spalte B enthält die Gruppenbezeichnung für die Popups 'Spalte C enthält eine Berechnung über Anzahl der Befehle pro Popup 'D2 enthält die Anzahl der Gruppen 'D4 enthält die Anzahl der gesamten Befehle im Menü 'Spalte E enthält die Zuordnung der Befehle zu einer Gruppe 'Spalte F enthält die Bezeichnung der Datei 'Spalte G enthält den Pfad der Datei inkl. Dateinamen Worksheets("Haupt").Activate Anzahl_Gruppen = Range("D2").Value Anzahl_Links = Range("D4").Value 'Sortiert die Spalten A bis C nach A Columns("A:C").Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'Sortiert die Spalten E bis G nach E Columns("E:G").Select Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Range("C2").Select For i = 1 To Anzahl_Gruppen Set Popup = KFMenue.Controls.Add(Type:=msoControlPopup, before:=i) Range("A1").Select ActiveCell.Offset(i, 0).Activate GruppenNr = ActiveCell.Value ActiveCell.Offset(0, 1).Activate cap = ActiveCell.Value Popup.Caption = cap For j = 1 To Anzahl_Links Range("e1").Activate ActiveCell.Offset(j, 0).Activate If ActiveCell.Value = GruppenNr Then Set neuButton = Popup.Controls.Add(Type:=msoControlButton, before:=j) ActiveCell.Offset(0, 1).Activate cap = ActiveCell.Value ActiveCell.Offset(0, 1).Activate act = ActiveCell.Value With neuButton .Caption = cap .OnAction = act End With End If Next j Next i End Sub Sub Menueleiste_FSJ_Delete() CommandBars("FSJ Dateimenü").Delete End Sub [/Code] Vielleicht kann mir ja jemand den entscheidenden Tip geben. Würde mich freuen. Bis dann Nachtrabe

Antwort 1 von Nachtrabe

Hallo ihr lieben,

leider habe ich noch keine Lösung und werde wohl auf eine Wald-und-Wiesenprogrammierung zurückgreifen müssen. Falls jemand doch noch einen Hinweis hat, würde ich mich freuen.

Bis dann
Nachtrabe

Antwort 2 von nighty

hi nachtrabe :)

ich koennte dir nur raten im vbeditor f8 zu benutzen,dann werden von einem makro pro druck auf f8 ein befehl abgearbeitet,die var sind einfach zu kontrollieren ,mit dem mousezeiger darueber und schon wird dessen wert angezeigt,so ist fehlerlokalisierung doch einfach :))

gruss nighty

Antwort 3 von Nachtrabe

Hi nighty,

lieb gemeint, und F8 ist in der Regel auch sehr nützlich.

Aber ich weiß ja wo der Fehler liegt, nur kenn ich die Lösung nicht.

Die Eigenschaft .OnAction verweist i.d.R. auf ein Makro. Durch meine Schleifen habe ich versucht, einer Variablen den Wert verschiedener Zellen zuzuordnen (in denen die Dateinamen und Pfade stehen). Nehme ich Makronamen, behält der jeweilige ControlButton den Wert. Bei Dateinamen brauche ich, um diese zu öffnen jedoch den Befehl "Workbooks.Open()" Und der verträgt sich nicht mit .OnAction !

Ich will jedoch nicht ein Makro mit x Variablen erstellen, wo jeder Zellwert einer Variablen zugeordnet wird. Das ist weder Sinnvoll (Was passiert bei X+1 eingetragenen Dateien...) noch schnell.

Aber trotzdem Danke

Nachtrabe

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: