AW: Nach Druck mehrerer Sheets, nur 1 aktives Shee
23.03.2007 02:01:50
fcs
Hallo Peter,
das geht auch, bleibt nur die Frage wie willst du das Makro dann starten, wenn du nicht über das Menü Extras--Makro--Makros... strten möchtetst?
Möglichkeit 1:
Du plazierst in jedem Blatt oben eine Schaltfläche, die das Drucken-Makro startet. Dabei muss du das Format/die Eigenschaft des Buttons ggf. so einstellen, dass er nicht mit gedruckt wird.
Möglichkeit 2:
Beim Öffnen der Datei wird ein Makro gestartet, dass eine Symbolleiste erzeugt mit einer Schaltfläche, der das Druckenmakro zugewiesen wird.
Beim Schließen der Datei wird per Makro die Symbolleiste wieder gelöscht.
Möglichkeit 2 ist die etwas elegantere, ich persönlich mag es allerdingst nicht so gerne, wenn mir Excel-Dateien unaufgefordert Symbolleisten oder Menüpunkte ein- und ausblenden.
Gruß
Franz
Makros mit zusätzlicher Symbolleiste müssen dann etwa wie folgt aussehen:
In einem Modul der Datei:
Sub SelektierteBlattDrucken()
' Drucken der selektierten Blätter und Gruppierung auflösen
Dim wks
Set wks = ActiveSheet
If MsgBox("Alle selektierten Blätter drucken?", vbQuestion + vbYesNo) = vbYes Then
ActiveWindow.SelectedSheets.PrintOut
End If
wks.Select
End Sub
Sub SymbolleisteErzeugen()
' SymbolleisteErzeugen Makro
Dim SymLeiste As CommandBar, SymLeisteButton As CommandBarControl
Application.CommandBars.Add(Name:="SelektierteTabellenDrucken").Visible = True
Set SymLeiste = Application.CommandBars("SelektierteTabellenDrucken")
SymLeiste.Position = msoBarTop
Set SymLeisteButton = SymLeiste.Controls.Add(Type:=msoControlButton, Id:=2950, Before:=1)
With SymLeisteButton
.Caption = "Selektierte Tabellen drucken"
.OnAction = "SelektierteBlattDrucken"
.TooltipText = "Druckt die gruppierten Blätter und hebt anschließend Gruppierung auf"
.DescriptionText = "Selektierte Tabellen drucken"
End With
MsgBox "Button in neuer Symbolleiste dient zum Drucken gruppierter Blätter"
End Sub
Sub SymbolleisteLoeschen()
' SymbolleisteLöschen Makro
On Error Resume Next
Application.CommandBars("SelektierteTabellenDrucken").Delete
End Sub
Unter diese Arbeitsmappe:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call SymbolleisteLoeschen
End Sub
Private Sub Workbook_Open()
Call SymbolleisteErzeugen
End Sub