Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
416to420
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
416to420
416to420
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makros in Mappe1 verfügbar machen

Makros in Mappe1 verfügbar machen
Andreas
Guten Morgen allerseits!
Hab wiedermal ein Problem. Wie kann ich erreichen, das meine Makros mit meiner Mappe1, also beim öffnen einer neuen Mappe, geladen werden. Habe schon versucht die Datei als Vorlage in alle möglichen Startordnern zu speichern. Ich benutze Excel2000 und wahlweise WinXP oder Win98SE.
Weiß Jemand Rat?
Danke schon mal!
mfg, Andreas
AW: Makros in Mappe1 verfügbar machen
Matthias
Hallo Andreas,
speichere die Datei mit deinen Makros als Add-In (.xla) und lade es unter Extras-Add-In Manager (Haken davor machen).
Gruß Matthias
AW: Makros in Mappe1 verfügbar machen
Andreas
Hallo Matthias!
Danke, dass hatte ich schon hinbekommen, jetzt muss ich aber nach jedem Start erst in den VBA editor um von dort das Makro aufzurufen. Kann man das irgendwie über eine Schaltfläche oder ähnliches lösen.
Danke für deine Hilfe!
mfg, Andreas
AW: Makros in Mappe1 verfügbar machen
Matthias
Hallo Andreas,
Willst Du eine Symbolleiste dafür?
Matthias
AW: Makros in Mappe1 verfügbar machen
Andreas
Hi Matthias!
Das wäre nicht schlecht!
mfg, Andreas
AW: Makros in Mappe1 verfügbar machen
Matthias
Hallo Andreas,
füge folgenden Code in ein Modul deines Add-Ins ein:

Const SymbolleistenName = "Meine Symbolleiste"
Sub LöscheSymbolleiste()
On Error Resume Next 'falls nicht vorhanden
Application.CommandBars(SymbolleistenName).Delete 'löschen, falls vorhanden
On Error GoTo 0
End Sub
Sub BaueSymbolleiste()
Dim cB As CommandBar
Dim CBC As CommandBarButton
Dim i%
On Error Resume Next
Application.CommandBars(SymbolleistenName).Delete 'löschen, falls vorhanden
Set cB = Application.CommandBars.Add(Name:=SymbolleistenName, _
temporary:=True, Position:=msoBarTop)
On Error GoTo 0
If Application.CommandBars(SymbolleistenName).Visible = False Then
cB.Visible = True
' den Wert 3 immer mit der Anzahl der zu erstellenden Symbole abgleichen
For i = 1 To 3
Set CBC = cB.Controls.Add(Type:=msoControlButton)
With CBC
.Style = msoButtonIconAndCaption
Select Case i
Case 1
.BeginGroup = True
.Caption = "Makro"      'Der Name der Controlbuttons
.OnAction = "Makro1"    'Hier den Makronamen eintragen!
.TooltipText = "blabla" 'erscheint als Tooltip
.FaceId = 3             'das "Gesicht" des Buttons
.Style = msoButtonIconAndCaption 'Name und Symbol (geht auch anders!)
Case 2
.BeginGroup = True
.Caption = "Schließen"
.OnAction = "Makro2"
.TooltipText = "Dienstplan schließen"
.FaceId = 103
.Style = msoButtonIconAndCaption
Case 3
.BeginGroup = True
.Caption = "Drucken"
.OnAction = "Makro3"
.TooltipText = "Dienstplan drucken"
.FaceId = 4
.Style = msoButtonIconAndCaption
End Select
End With
Next i
End If
End Sub
Und folgendes in "DieseArbeitsmappe" deines Add-Ins:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
LöscheSymbolleiste
End Sub
Private Sub Workbook_Open()
BaueSymbolleiste
End Sub
Du kannst die Anzahl der Buttons der Leiste beliebig verändern, wichtig ist, dass du den Wert in der Schleife
For i=1 to 3

entsprechend anpasst. Ebenso die zugewiesenen Makronamen.
Die Face-Id-Nummer kannst du dir hier schön raussuchen:
http://www.0711office.de/excel/xla/FaceIdViewer.htm
Viel Spaß,
Matthias
Anzeige
AW: Makros in Mappe1 verfügbar machen
Andreas
Hi Matthias!
So was ähnliches habe ich schon, dank dieses Forums. Kann ich das gleich benutzen?
Ich habe halt leider wenig Ahnung von VBA.

Sub Menü_einfügen()
Dim NeuesMenue As CommandBar, St As CommandBarButton, Pop1 As CommandBarPopup
On Error Resume Next
Application.CommandBars("MeineLeiste").Delete
On Error GoTo 0
Set NeuesMenue = CommandBars.Add(Name:="MeineLeiste", temporary:=True)
With NeuesMenue
.Position = msoBarTop
.Visible = True
End With
Set Pop1 = NeuesMenue.Controls.Add(Type:=msoControlPopup)
Pop1.Caption = "Tools"
Set St = Pop1.Controls.Add(Type:=msoControlButton, ID:=1)
With St
.Caption = "Druckbereich für Gravur festlegen"
.Style = msoButtonCaption
.OnAction = "Makro_1"
End With
Set St = Pop1.Controls.Add(Type:=msoControlButton, ID:=1)
With St
.Caption = "Druckbereich wieder normal"
.Style = msoButtonCaption
.OnAction = "Makro_2"
End With
Set St = Pop1.Controls.Add(Type:=msoControlButton, ID:=1)
With St
.Caption = "einblenden der Datenspalten"
.Style = msoButtonCaption
.OnAction = "Makro_3"
End With
Set St = Pop1.Controls.Add(Type:=msoControlButton, ID:=1)
With St
.Caption = "ausblenden der Datenspalten"
.Style = msoButtonCaption
.OnAction = "Makro_4"
End With
Set St = Pop1.Controls.Add(Type:=msoControlButton, ID:=1)
With St
.Caption = "Überweisungsbeträge Zählen"
.Style = msoButtonCaption
.OnAction = "Makro_5"
End With
Set St = Pop1.Controls.Add(Type:=msoControlButton, ID:=1)
With St
.Caption = "VorOrt-Listen einblenden"
.Style = msoButtonCaption
.OnAction = "Makro_6"
End With
'und so weiter und so fort
End Sub


Sub Makro_1()
MsgBox "Blendet alle Schüler ohne Gravur aus und verändert den Druckbereich auf A1:I48"
'ändern des Druckbereiches auf den Bereich "A1:I48!
'ausblenden der Zeilen ohne Gravur
'Bildschirmaktualisierung unterdrücken
Application.ScreenUpdating = False
For z = 1 To 20
With Worksheets(z)
.PageSetup.PrintArea = "$A$1:$i$48"
.PageSetup.Orientation = xlPortrait
.Unprotect
For i = 11 To 46
If .Cells(i, 26) <> 1 And .Cells(i, 27) <> 1 Then
.Rows(i).Hidden = True
End If
Next i
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
Next z
Sheets(1).Select
Range("A11").Select
' Bildschirmaktualisierung wieder einschalten
Application.ScreenUpdating = True
MsgBox "Fertig! Die Gravurlisten können jetzt gedruckt werden"
End Sub


Sub Makro_2()
MsgBox "Blendet wieder alle Schüler ein und legt den Druckbereich auf A1:T48 fest"
'Bildschirmaktualisierung unterdrücken
Application.ScreenUpdating = False
Dim i As Integer
For i = 1 To 20
With Sheets(i)
.Unprotect
.Rows("11:46").Hidden = False
.PageSetup.PrintArea = "$A$1:$T$48"
.Protect
End With
Next i
'Bildschirmaktualisierung wieder einschalten
Application.ScreenUpdating = True
Sheets(1).Select
Range("A11").Select
MsgBox "Fertig!"
End Sub


Sub Makro_3()
MsgBox "Es werden die Spalten sichtbar, in denen sich Berechnungswerte befinden. Bevor diese Werte verändert werden, sollte eine Sicherungskopie angelegt werden!"
'Blendet die Datenspalten im aktiven Blatt ein
ActiveSheet.Unprotect
Columns("U:BK").Select
Selection.EntireColumn.Hidden = False
Range("A11").Select
End Sub


Sub Makro_4()
MsgBox "Datenspalten wieder ausblenden"
'ausblenden der Datenspalten im aktiven Blatt
ActiveSheet.Unprotect
Columns("V:BJ").Select
Selection.EntireColumn.Hidden = True
Range("A11").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


Sub Makro_5()
MsgBox "Es werden jetzt alle Überweisungsbeträge gezählt und das Blatt 'Einzelüberweisungen' wird eingeblendet"
'Zählt die verschiedenen Preise und deren Anzahl zum ausfüllen
'der Einzelüberweisungsträger und sortiert die Werte
Dim i%, c As Range, r As Range
ActiveWorkbook.Unprotect
Sheets("Einzelüberweisungen").Visible = True
With Worksheets("Einzelüberweisungen")
Sheets("Einzelüberweisungen").Select
Range("A3").Select
ActiveSheet.Unprotect
.Range("A3:B900").ClearContents
For i = 1 To 20
For Each c In Worksheets(i).Range("T11:T46")
If IsNumeric(c.Value) And Not c.Value = 0 Then
Set r = .Range("A3:A723") _
.Find(What:=c.Value, LookIn:=xlFormulas, LookAt _
:=xlWhole)
If Not r Is Nothing Then
r.Offset(0, 1).Value = r.Offset(0, 1).Value + 1
Else
Set r = .Range("A65536").End(xlUp)
If r.Row = 1 Then Set r = .Range("A2")
r.Offset(1, 0).Value = c.Value
r.Offset(1, 1).Value = 1
End If
End If
Next c
Next i
End With
Range("A3:B50").Select
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A3:B50").Select
Selection.NumberFormat = "#,##0.00 [$€-1]"
Range("A3").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveWorkbook.Protect Structure:=True, Windows:=False
End Sub


Sub Makro_6()
MsgBox "Die VorOrt-Listen werden eingeblendet"
'blendet 2 VorOrt-Listen ein
ActiveWorkbook.Unprotect
Sheets("VorOrtÜberweisungslisten").Visible = True
Sheets("VorOrtAbrechnung").Visible = True
End Sub

Danke für die Hilfe!
mfg, Andreas
Anzeige
AW: Makros in Mappe1 verfügbar machen
Matthias
Hallo Andreas,
klar geht das auch.
Du musst das Makro "Menü_Einfügen" halt beim Öffnen des Add-Ins starten:
Private Sub Workbook_Open()
Menü_Einfügen
End Sub

Du solltest aber noch die Leiste löschen, wenn das Add-In entladen wird:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
LöscheSymbolleiste
End Sub

die zwei obigen Subs müssen ins Modul "DieseArbeitsmappe" dess Add-Ins!
________________________________________________________________________
Das LöscheSymbolleiste-Makro musst Du noch etwas anpassen:
Sub LöscheSymbolleiste()
On Error Resume Next 'falls nicht vorhanden
Application.CommandBars("MeineLeiste").Delete 'löschen, falls vorhanden
On Error GoTo 0
End Sub

Obige Prozedur in ein normales Modul (Modul1 z.B.)
Viel Erfolg,
Matthias
Anzeige
AW: Makros in Mappe1 verfügbar machen
Andreas
Hallo Matthias!
Vielen Dank für deine Hilfe, werde das heute Abend alles mal durchtesten.
Rückmeldung kommt.
mfg, Andreas
AW: Hi Matthias, habe deine Variante .........
Andreas
Hi Matthias!
Dank deiner Hilfe und deiner, selbst für mich, nachvollziehbaren Erklärungen, habe ich das gestern Abend schnell hinbekommen. Ich habe deine Variante genommen. Funzt super.
mfg
Andreas
AW: Danke für die Rückmeldung! - o.T.
22.04.2004 20:06:06
Matthias
:-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige