Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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
Inhaltsverzeichnis

Personal.xls

Personal.xls
09.09.2018 14:44:27
Manuel
Hi ich bin Manuel und neu in diesem Forum. Ich bin nicht wirklich geübt in VBL und brauche deswegen eure Hilfe.
Ich versuche zurzeit im Unternehmen die Excel-Mappen zu standardisieren. Oft speichern/drucken wir Excel-Seiten als pdf. und schicken sie dann an Kunden. Die als pdf. gespeicherten Seiten sehen alle unterschiedlich aus. Deswegen möchte ich ein einheitliches Layout (Kopf-und Fußzeilen) für alle Excel-Mappen (schon erstellte und neu zu erstellende Mappen) einführen. Meine Idee ist, mit einem Marko im Personl.xls zu arbeiten. Die Mappe Personal.xls stelle ich in einen öffentlichen Ordner des Firmennetzwerkes und richte in Excel über Optionen ein, dass beim Start von Excel alle Dateien geöffnet werden von dem öffentlichen Ordner.
So weit so gut. Ich habe nun ein Marko aufgezeichnet in dem ich eine Kopfzeile erstelle und im Personal.xls gespeichert. Jedes Mal wenn ich eine Excel-Mappe nun starte, öffnet sich im Hintergrund versteckt eine zweite Excel-Mappe in der die Makros hinterlegt sind. Die Makros sind für alle offenen Excel-Mappen nun anwendbar. Das Problem was ich nun habe ist das ich möchte, dass die Makros automatisch ausgeführt werden. Wenn ich mit sub auto_open () arbeite, wird mein Makro nur in der versteckten Arbeitsmappe ausgeführt.
Hat jemand eine Idee wie ich das Problem lösen kann. Ich wäre für Ratschläge sehr dankbar.

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Personal.xls
09.09.2018 15:05:06
Mullit
Hallo,
auto_open() ist veraltet, Du mußt an die Application-Events ran, dazu zusätzl. Klassenmodul einfügen: Rechtsklick auf die Module >>> Einfügen >>> Klassenmodul und in clsApplication umbenennen, dann folgender Code in die beiden Module Deiner persönl. Mappe:
' ********************************************************************** 
' Modul: DieseArbeitsmappe Typ: Klassenmodul der Arbeitsmappe 
' ********************************************************************** 

Option Explicit

Private mobjApplicationClass As clsApplication

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set mobjApplicationClass = Nothing
End Sub

Private Sub Workbook_Open()
Set mobjApplicationClass = New clsApplication
End Sub

' ********************************************************************** 
' Modul: clsApplication Typ: Klassenmodul 
' ********************************************************************** 

Option Explicit

Private WithEvents mobjApplication As Excel.Application

Private Sub Class_Initialize()
Set mobjApplication = Excel.Application
End Sub

Private Sub Class_Terminate()
Set mobjApplication = Nothing
End Sub

Private Sub mobjApplication_WorkbookOpen(ByVal Wb As Workbook)
'// Hier Dein Code für die Open Events aller Mappen.. 
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige
AW: Personal.xls
09.09.2018 15:55:14
Manuel
Hey Mullit,
danke schön für deine schnelle Antwort, ich werde dein Code gleich mal ausprobieren!
AW: Personal.xls
09.09.2018 16:39:31
Manuel
Hi Mullit,
ich habe dein Ratschlag befolgt und zwei Klassenmodule erstellt mit deinen jeweiligen Codes drin. Das Problem ist aber immer noch das selbe. Die Kopfzeile ist nur automatisch in die versteckten Personl - Arbeitsmappe vorhanden und nicht in der neu erstellten Arbeitsmappe.
Unter folgenden Link kannst du mein Code sehen.
https://www.herber.de/bbs/user/123843.doc
Gruß
Manuel
AW: Personal.xls
09.09.2018 18:54:42
Mullit
Hallo Manuel,
nein nicht zwei Klassenmodule erstellen, sondern nur eines (clsApplication) , der andere Code kommt in Dein Arbeitsmappenmodul ("DieseArbeitsmappe") (den kl. Ordner in Deinem Bild Microsoft Excel Objekte aufklappen), das nennt man auch ein Klassenmodul, darin befindet sich dann das Workbook_Open-Event....
Gruß, Mullit
Anzeige
AW: Personal.xls
09.09.2018 20:33:52
Mullit
Hallo nochmal,
wenn Du mit den Klassenmodulen durcheinanderkommst, kannst Du auch alles in Dein Arbeitsmappenmodul packen, ist irgendwie Geschmackssache...
' ********************************************************************** 
' Modul: DieseArbeitsmappe Typ: Klassenmodul der Arbeitsmappe 
' ********************************************************************** 

Option Explicit

Private WithEvents mobjApplication As Excel.Application

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set mobjApplication = Nothing
End Sub

Private Sub Workbook_Open()
Set mobjApplication = Excel.Application
End Sub

Private Sub mobjApplication_WorkbookOpen(ByVal Wb As Workbook)
'// Hier Dein Code für die Open Events aller Mappen.. 
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Ach ja, Deine ActiveSheets müsstest Du dann mit dem Workbook referenzieren: Wb.ActiveSheet...
Gruß, Mullit
Anzeige
AW: Personal.xls
10.09.2018 06:59:12
Manuel
Hallo Mullit,
ich danke dir für deine Hilfe! Beide Varianten (Variante 1: mit einem Klassenmodul und einem Arbeitsmappenmodul / Variante 2: alles in einem Arbeitsmappenmodul) funktionieren soweit.
Was mich ein wenig irritiert ist folgends:
Wenn ich eine neue Excel-Mappe erstelle funktioniert das Makro nicht (ist nicht ganz so schlimm, da es mir hauptsächlich um Excel-Mappen geht die bereits in der Vergangenheit erstellt wurden.)
Wenn ich eine „alte Excel-Mappe“ öffne funktioniert das Makro (danke schön dafür). Was aber nicht optimal ist, sind folgende Punkte:
- Es öffnet sich gleichzeitig eine blanke zweite Excel-Arbeitsmappe, in der kein Tabellenblatt enthalten ist (das ist wahrscheinlich die Personl.xls Mappe).
- Wenn ich eine „alte Excel-Mappe“ öffne ist das erste Tabellenblatt mit den Name „Tabelle1“ benannt. Füge ich nun weitere Tabellenblätter ein, sind diese benannt mit Sheet1, Sheet2, ... usw. Zudem funktioniert in diesen neuen Sheets das Makro nicht.
Hättest du vielleicht noch zu diesen Punkten Tipps, wie man die lösen könnte?
Schöne Grüße
Manuel
PS: Ich kann leider nicht immer sofort zurück schreiben, da wir ein Zeitunterschied von 5 Stunden haben. Ich arbeite zurzeit in Vietnam.
Anzeige
AW: Personal.xls
10.09.2018 08:24:18
Daniel
Hi
Naja normal.
Das WorkbookOpen-Event wird nur beim Öffnen der Datei ausgefüllt und nicht beim Neuerstellen oder beim Einfügen eines Tabellennlatts.
Vielleicht verwendest du besser das BeforePrint-Event, um Kopf- und Fußzeile einzurichten.
Makros im Startordner haben meistens noch eine Programmzeile in ihrem WoekbookOpenevent, welches ihr Fenster ausblendet, so dass die Datei nicht sichtbar ist.
Gruß Daniel
AW: Personal.xls
10.09.2018 09:42:45
Manuel
Hi Daniel,
danke für die Antwort. Ich habe ein wenig gegoogelt nach der Programmzeile im WoekbookOpenevent, die das Fenster der Personl.xls ausblendet. Ich habe dazu aber nichts gescheites gefunden. Könntest du das vielleicht ein wenig detaillierter beschreiben.
Gruß Manuel
Anzeige
AW: Personal.xls
10.09.2018 09:52:51
daniel
Hi
naja dann eröffne dir mal als weitere Informationsquelle den Makrorecorder.
https://online-excel.de/excel/grusel_vba.php?f=6
denn kannst du immer dann einsetzen, wenn du eine Excel-Menüfunktion per Makrocode ausführen lassen willst.
der aufgezeichnete Code bedarf zwar meistens noch der Überarbeitung, aber zumindest siehst du, wie der Befehl heißt, welche Parameter verwendet werden und kannst über die F1-Taste direkt die Hilfe zum jeweiligen Befehl aufrufen.
in deinem Fall wäre es die Menüfunktion Ansicht - Fenster - Ausblenden

Gruß Daniel
AW: Personal.xls
10.09.2018 10:28:29
Manuel
Hi Daniel,
OK so meintest du das. Den Makrorecorder kenne ich natürlich. Werde das damit mal ausprobieren. Danke.
Gruß Manuel
Anzeige
AW: Personal.xls
09.09.2018 15:18:32
Hajo_Zi
ab 2007 ist es Personal.xlsb

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Personal.xls = PersonL.xlsb
09.09.2018 15:52:57
Dieter(Drummer)
Hallo Hajo,
der Dateiname ist PersonL.xlsb
Gruß,
Dieter(Drummer)
das ist falsch
09.09.2018 16:00:45
Hajo_Zi
Personl war vor 2007
Gruß Hajo
ist doch wumpe, wie ihr die Datei nennt.
09.09.2018 16:13:56
Daniel
wichtig ist nur, dass sie in dem Verzeichnis liegt, welches als Autostartordner hinterlegt ist.
AW: ist doch wumpe, wie ihr die Datei nennt.
09.09.2018 16:17:26
Hajo_Zi
warum sollte man nicht den Namen benutzen den Excel festlegt. Ich sehe dafür keinen Grund.
Gruß Hajo
Anzeige
AW: das ist falsch ... ?
09.09.2018 16:15:27
Dieter(Drummer)
Hallo Hajo,
dann frag ich mich, warum es bei mir unter XLstart (Excel2010) funktioniert.
Wollte dir nicht auf die Füße treten ;-).
Gruß, Dieter(Drummer)
AW: das ist falsch ... ?
09.09.2018 18:15:37
Luschi
Hallo Dieter,
die Antwort findest Du hier:
https://support.office.com/de-de/article/anpassen-der-startweise-von-excel-6509b9af-2cc8-4fb6-9ef5-cf5f1d292c19
Gruß von Luschi
aus klein-Paris
AW: Danke Luschi ...
09.09.2018 20:29:24
Dieter(Drummer)
... mir ist bekannt, dass die Dateien im Ordner XLStart aktiviert werden.
Deshalb ist es egal, ob die Datei PersonL.xlsb heißt, oder Personal.xlsb.
Ich gebe aber Hajo Recht, dass es schon richtig ist, den Dateinamen korrekt zu nutzen.
Ich werde bei nächster Gelegenheit, den Dateinamen korrekt ändern und entsprechende Makros, die diese Datei für mich an anderen Stellen absichern, ebenfalls korrigieren.
Gruß, Dieter(Drummer)
Anzeige
der Dateiname ist egal
09.09.2018 23:01:09
Daniel
es gibt keinen "korrekten" Dateinamen.
MS hast sich halt für einen Dateinamen entschieden und ab einer bestimmeten Excelversion für einen anderen.
das kann man übernehmen wenn man möchte, man muss es aber nicht.
insbesondere im Fall des Fragestellers würde ich eher zu einem anderen Dateinamen raten, da ja nicht auszuschließen ist, dass ein Anwender schon diese Datei mit eigenen Inhalten versehen hat und es dann sicher gestellt sein muss, dass beide Dateien automatisch geöffnet werden.
Gruß Daniel
AW: der Dateiname ist egal
10.09.2018 08:38:59
Dieter(Drummer)
Hallo Daniel,
was du da schreibst ist mir inzwischen auch klar geworden.
Gruß, Dieter(Drummer)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige