Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

  Autostart Makro vor Druck und Speichern
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 15.02.2008, 14:14 Nach oben

Hallo Schatzi und andere Excel Götter!

Hab wieder mal eine Frage:

Ich würde gerne dieses Makro automatisch vor dem Drucken und vor dem Speichern abrennen lassen:

Code:
Sub Alle_Kopfzeilen()
     y = "Design by xy"
      For x = 1 To ActiveWorkbook.Sheets.Count
         ActiveWorkbook.Sheets(x).PageSetup.LeftHeader = y
         
      Next
   End Sub


Es soll deshalb automatisch rennen, damit dieser Design Hinweis immer drinnen ist, auch wenn jemand anderer die Kopfzeile ändert.

Hab schon im WWW gesucht und herausgefunden dass man ein Klassenmodul benutzen muss, hab das aber mit dem Code (der für ein anderes Beispiel war) nicht kapiert)

Danke schon mal im Voraus!

Lg
Herbert

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 5725

BeitragVerfasst am: 15.02.2008, 15:56 Nach oben

Hallo!

Wenn du im VBA-Editor auf "DieseArbeitsmappe" doppelklickst, findest du über dem Codefenster zwei ComboBoxen.
Wähle in der ersten "Workbook" und in der zweiten einmal "BeforeSave" und einmal "BeforePrint".
Nun müsstest du zwei Coderümpfe sehen, die so ausschauen:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

Füge hier jeweils deinen Code (ohne Sub und End Sub) ein.

_________________

Viele Grüße vom Schatzi

------------------------
Ich bin nur noch sporadisch erreichbar!
Bitte hofft nicht auf eine schnelle Beantwortung einer Rückfrage meinerseits!
Jeder andere Helfer darf Rückfragen gerne übernehmen!
Benutzer-Profile anzeigenPrivate Nachricht senden
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 15.02.2008, 18:46 Nach oben

Danke Excelgott!

Werde es morgen gleich ausprobieren!

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 18.02.2008, 09:20 Nach oben

Servus Schatzi!

Hab den Code so eingefügt (mit den Combo Boxen)

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 y = "Designed by ECO"
      For x = 1 To ActiveWorkbook.Sheets.Count
         ActiveWorkbook.Sheets(x).PageSetup.LeftHeader = y
         
      Next
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 y = "Designed by ECO"
      For x = 1 To ActiveWorkbook.Sheets.Count
         ActiveWorkbook.Sheets(x).PageSetup.LeftHeader = y
         
      Next
End Sub


Das Problem ist - beim Speichern rechnet das Programm ziemlich lange - dort wo sonst "Bereit" steht, zeigt Excel 2003 beim Speichern nach der Reihe 1 bis 5 - und das rennt das Programm dreimal durch.

Ist das normal, dass die Berechnung so lange braucht - am Rechner selbst sollte es nicht liegen.

Hast du eine Idee das ganze zu beschleunigen?!?

Mfg
Herbert
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 435
Wohnort: Kiel

BeitragVerfasst am: 18.02.2008, 16:32 Nach oben

trottlbua hat Folgendes geschrieben:
ActiveWorkbook.Sheets(x).PageSetup.LeftHeader = y
Hast du eine Idee das ganze zu beschleunigen?!?

Die Zugriffe auf das Pagesetup-Objekt dauern ekelhaft lange. Da scheint sich auch nichts dran drehen zu lassen.

Ich lasse oft per Code ein Tabellenblatt erstellen und passe es dann mittels Pagesetup an. Da kann es schon passieren, daß man 10 oder mehr Sekunden vor einem leeren Tabellenblatt sitzt, in der sich nur rechts oben ein leichtes Blinken bemerkbar macht.

Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 17.03.2008, 13:25 Nach oben

solange sich die Laufzeit in Grenzen hält, ist es verkraftbar - aber danke für den Hinweis.

Hab noch ein Problem - habe den Code etwas abgeändert

Code:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    For x = 1 To ActiveWorkbook.Sheets.Count
         
         ActiveWorkbook.Sheets(x).PageSetup.CenterHeader = Range("Header").Value
         ActiveWorkbook.Sheets(x).PageSetup.RightHeader = Range("QuartalsberichtNr").Value
               
    Next
               
End Sub


Funktioniert auch super (besonders gut ist es die Zellen auf die man sich beziehen will mit einem Namen zu definieren, weil ansonsten checkt das VBA nicht wenn man oberhalb Zeilen einfügt oder löscht - oder wisst ihr was besseres?)

Möchte jetzt aber auch noch eine Formatierung der Kopzeile vornehmen

Befehl wäre:
Code:


         ActiveWorkbook.Sheets(x).PageSetup.CenterHeader = "&""Verdana,Fett""BEISPIELTEXT"
         
 

Das Problem ist - wie gebe ich VBA anstatt des "BEISPIELTEXT" die Zelle an aus der der Wert kommen soll?

Lg
Herbert

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
miriki
Schlauberger
Schlauberger


Anmeldedatum: 05.03.2007
Beiträge: 435
Wohnort: Kiel

BeitragVerfasst am: 17.03.2008, 14:37 Nach oben

trottlbua hat Folgendes geschrieben:
Code:
ActiveWorkbook.Sheets(x).PageSetup.CenterHeader = "&""Verdana,Fett""BEISPIELTEXT"

Das Problem ist - wie gebe ich VBA anstatt des "BEISPIELTEXT" die Zelle an aus der der Wert kommen soll?

Für "einmalig": Ersetze "BEISPIELTEXT" mit
Code:
trim$(workbooks(b).worksheets(s).cells(y,x).value & " ")

(Das trim$ und das angehängte " " benutze ich manchmal, um Probleme mit NULL-Werten zu verhindern. Kann sein, daß es hier völlig überflüssig ist.)

Aber ich tippe mal, Du möchtest die Kopf/Fußzeile dynamisch mit ändern lassen, wenn sich der Inhalt der entsprechenden Zelle ändert? Öhm, sorry, weiß jetzt gar nicht, ob das dort überhaupt möglich ist.

Ein Ansatz könnte aber über das Ereignis OnChange (des worksheets) sein, wo Du dann die PageSetup-Eigenschaft jeweils neu setzen könntest, wenn sich die Zelle ändert.

Gruß, Michael
Benutzer-Profile anzeigenPrivate Nachricht sendenICQ-Nummer
trottlbua
Besserwisser
Besserwisser


Anmeldedatum: 31.01.2007
Beiträge: 82

BeitragVerfasst am: 03.06.2008, 15:24 Nach oben

Servus Mikri!

hab die ganze Prozedur ein bischen abgekürzt:

Code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 y = "Designed by xy"


For x = 1 To ActiveWorkbook.Sheets.Count
      If ActiveWorkbook.Sheets(x).PageSetup.LeftHeader = y Then
     
      Else
      ActiveWorkbook.Sheets(x).PageSetup.LeftHeader = y
      End If
     
      Next
     

End Sub


Das if then else - ich schwöre es - halbiert die Zeit locker wenn nichts geändert wurde!

_________________
Mfg
Lucky

Arbeit: Office 2003, @home: Office 2007
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge VBA-Makro: Kalendereintrag kopieren? SvenZ Microsoft Outlook Hilfe 9 18.11.2008, 10:16 Letzten Beitrag anzeigen
Keine neuen Beiträge "In eine Zahl umwandeln" pe... Frederic Microsoft Excel Hilfe 4 13.11.2008, 15:46 Letzten Beitrag anzeigen
Keine neuen Beiträge Makro Einfügen/Paste Befehl immer in ... Skatgott Microsoft Excel Hilfe 1 12.11.2008, 16:17 Letzten Beitrag anzeigen
Keine neuen Beiträge Speichern unter verschwunden Sandra Pritt Microsoft Word Hilfe 2 11.11.2008, 18:39 Letzten Beitrag anzeigen
Keine neuen Beiträge Speichern Dateiberechtigungsfehler WordWord Microsoft Word Hilfe 4 28.10.2008, 12:40 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Battle-Dream | Tuning Forum | Join the YoungGeneration | krankenversicherungsvergleich | Kalorienarme Rezepte!
Versicherungsvergleich | Bürobedarf | Papier | Betten

Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de