makro zuweisen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: makro zuweisen
von: niki
Geschrieben am: 11.04.2005 10:38:04
hallo forum,
mir wurde heute schon gut geholfen, (s.u), ich erhielt ein makro für pfad in kopfzeile, mein problem ist nun, wie kann ich dieses makro immer verfügbar machen...hab es bereits in der persönlichen mappe gespeichert, aber bei makro zuweisen (einem symbol in der menü leiste) finde ich kein makro ? Was mach ich denn falsch?


Private Sub Workbook_BeforePrint(Cancel As Boolean)
    ActiveSheet.PageSetup.CenterFooter = ThisWorkbook.FullName & "\" & ActiveSheet.Name
End Sub

Dieses makro möchte ich also in der symbolleiste unterbringen, sodass es bei jedem öffnen einer neuen mappe oder alten, bereits gespeicherten, verfügbar und anwendbar ist..bitte um hilfe, schaffs nicht...danke
Bild

Betrifft: AW: makro zuweisen
von: Tobias Marx
Geschrieben am: 11.04.2005 10:44:27
Servus niki,
Was du vorhast, ist nicht so trivial, wie es aussieht. Die erste Zeile deines Codes besagt naemlich: Fuehre das Makro aus, wenn drucken gedrueckt wurde, aber noch bevor der Druck-Dialog erscheint. Das Problem ist, dass dies kein allgemein verfuegbares Makro ist, da es sich auf eine bestimmte Workbook-Prozedur bezieht. Dir bleibt also nichts anderes uebrig, als den Code in jede Arbeitsmappe zu kopieren... leider :-(

Gruss

Tobias
Bild

Betrifft: AW: makro zuweisen
von: niki
Geschrieben am: 11.04.2005 11:02:12
hallo und danke...also nicht so einfach...habs auch schon mit add in versucht, aber wenn ich die mappe wo das makro drinnen ist als xla datei speicher, und mit add in assistent einrichte, ist diese funktion immer noch nicht verfügbar...vielen dank für deine antwort, kann man wohl nix machen...
Bild

Betrifft: AW: makro zuweisen
von: Heiko S.
Geschrieben am: 11.04.2005 11:28:18
Hallo niki,
was möchtest du denn haben.
Ein Makro das in der aktiven Arbeitsmappe den Kopftext anpaßt. Dann muss du doch nur die Codezeile in eine eigene Prozedur packen.

Sub KopfzeileAnpassen()
    ActiveSheet.PageSetup.CenterFooter = ThisWorkbook.FullName & "\" & ActiveSheet.Name
End Sub

Diese Makro kannst du dann einem Button in der Symbolleiste zuweisen.

Oder Möchtest du vor jedem drucken eines beliebigen Arbeitsblattes die Kopftext anpassen (oder anpassen können, z.B. über Abfrage mit einer MSGbox). Dann mußt du mit Klassenmodulen arbeiten und Das Application WorkbookBeforePrint nutzen, siehe dazu diese Diskussion.
https://www.herber.de/forum/messages/596433.html

Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: AW: makro zuweisen
von: niki
Geschrieben am: 11.04.2005 11:33:22
hallo und danke für die antwort,
ich möchte jede arbeitsmappe und jedes tabellenblatt alter und neuer mappen mit nem makro ausstatten, das mir, wenn gedruckt wird, den vollständigen pfad dieser datei ausgibt (kopf oder fusszeile)
Wie muss ich deinen code unterbringen? modul klassenmodul kenn ich, aber wo füge ich als prozedur ein? entschuldige meiné geringen kenntnisse.
Bild

Betrifft: AW: makro zuweisen
von: Heiko S.
Geschrieben am: 11.04.2005 11:55:24
Hallo niki,
hier mal als Ansatz.
https://www.herber.de/bbs/user/20968.xls
Den Code in deine Personl.xls und noch ein wenig erweitern, dann tut´s das was du möchtest.
Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: AW: makro zuweisen
von: niki
Geschrieben am: 11.04.2005 12:38:46
danke heiko für deinen geduld...muss wieder ganz allgemein werden, kenn ich selbst schon nicht mehr aus...mein wunsch ist nach dem drucken eines tabellenblatts rechts oben am papier das verzeichnis, den arbeitsmappennamen und name des tabellenblattes zu sehen...
optimal natürlich wenn mich eine msgbox noch fragt obs so sein soll (eh nicht immer)...
deinen code fürs klassenmodul hab ich in der personal.xls gespeichert, (in einem eingefügten klassenmodul), da tut sich nix...
wenn ich in einer neuen mappe auf drucken geh ist nichts am papier, hab wohl was falsch gemacht...meine vba kenntnisse sind gleich null...
Bild

Betrifft: AW: makro zuweisen
von: Heiko S.
Geschrieben am: 11.04.2005 12:46:27
Hallo niki,
1. EXCEL neu starten, sonst wird diese Aktion nicht initialisiert.
2. Wenn das nicht hilft, gucken ob du Tippfehler drin hast. Z.B. wenn du in EXCEL ein neues Klassenmodul erzeugst nennt EXCEL das Klasse1, das mußt du umbennen in Class1 für meinen Code.
3. Probieren, probieren probieren ...
Wie sind denn nun deine Kenntnisse ? Du behauptest Klassenmodule kennst du, aber als Level gibst du kaum EXCEL/VBA Kenntnisse an.
Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: ...bin schon still..
von: niki
Geschrieben am: 11.04.2005 12:50:33
hallo wieder, du ich hab kein "können", war ein mißverständnis, wenn ich gesagt hab ich kenn etwas...weiß nur wo man fertige sachen reinschreibt...aber du hast ganz recht, werd mich mehr auf lernen konzentrieren und dann bessere fragen stellen...probiern und üben und lesen...schönen tag...
Bild

Betrifft: AW: ...bin schon still..
von: Heiko S.
Geschrieben am: 11.04.2005 12:56:30
Hallo niki,
hast du auch den Code aus "DieseArbeitsmappe" in die Personl.xls übertragen ?

Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: ja hab ich...m.t
von: niki
Geschrieben am: 11.04.2005 13:08:30
ja hab alles glaub ich soweit gemacht...
in personal.xl klassenmodul (umbenannt auf class1):
Option Explicit
Public WithEvents Appli As Application


Private Sub Appli_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean)
    If MsgBox("Wollen Sie den Kopftext anpassen ?", vbYesNo, " Kopftextabfrage") = 6 Then
        Wb.ActiveSheet.PageSetup.CenterFooter = ThisWorkbook.FullName & "\" & ActiveSheet.Name
    End If
End Sub

in personal xl. diese arbeitsmappe:
Sub KopfzeileAnpassen()
ActiveSheet.PageSetup.CenterFooter = ThisWorkbook.FullName & "\" & ActiveSheet.Name
End Sub
aber es kommt vor dem drucken keine msgbox...hey echt vielen dank für deine zeit
Bild

Betrifft: AW: ja hab ich...m.t
von: Heiko S.
Geschrieben am: 11.04.2005 13:20:13
Hallo
jetzt bringst du gerade meine 2 Vorschläge durcheinander.
Bitte dies in "DieseArbeitsmappe" der Personl.xls und das andere raus.

Dim claX As New Class1
' Die Funktion Appli (Application Ereignisse) initialisieren.

Private Sub Workbook_Open()
     Set claX.Appli = Application
End Sub

Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: AW: ja hab ich...m.t
von: niki
Geschrieben am: 11.04.2005 13:37:32
hallo heiko,
also das wars...sorry, jetzt kommt die msgbox und es wird gefragt vor seitenansicht und drucken...allerallerletzte frage: der pfad verweist nun auf den xlstart ordner, da er ja von dieser mappe den code nimmt...wenn ich aber jetzt irgendeine mappe öffne, warum schreibt er mir dann nicht den entsprechenden speicherort rein, sondern stets xlstart ?
Bild

Betrifft: AW: ja hab ich...m.t
von: Heiko S.
Geschrieben am: 11.04.2005 13:44:33
Hallo
mach aus dieser Zeile
Wb.ActiveSheet.PageSetup.CenterFooter = ThisWorkbook.FullName & "\" & ActiveSheet.Name
diese Zeile
Wb.ActiveSheet.PageSetup.CenterFooter = Wb.FullName & "\" & wb.ActiveSheet.Name
ungetestet.

Gruß Heiko

PS: Rückmeldung wäre nett !
 Bild

Beiträge aus den Excel-Beispielen zum Thema "makro zuweisen"