Kopfzeile per Makro mit Textausschnitten von mehreren Zeilen anpassen
#1
Hallo,

Ich möchte mir ein Makro basteln, welches mir aus einer vom System erstellten Datei (.xls) eine vorzeigbare Datei erstellt.
Dazu soll eine Überschrift innerhalb der Datei über der Tabelle stehen. Ich habe versucht das Problem zu lösen, indem ich eine Kopfzeile einfüge, jedoch konnte ich das dann nicht im Makro einstellen, dass sich automatisch eine Überschrift aus Teilen von vorhandenen Feldern erstellt.

Folgendes soll durch Ausführen des Makros genau passieren:
- Kopfzeile erstellen (nur auf erstem Blatt der mehrseitigen Tabelle)
- Einfügen des Textes aus Zelle D1 bis auf die ersten 19 Buchstaben/Leerzeichen, dann stelle 18 + 19 in "D1" löschen
- Einfügen einer Leerstelle und des Wortes Inventory in der Kopfzeile sowie einer erneuten Leerstelle
- Einfügen der 5. - 14. Stelle aus dem Feld F1, dies ist ein Datum im Format TT.MM.JJJJ, nach Möglichkeit soll dies dann angegeben sein in JJJJ-MM-TT
- Nach Ausführung wäre es klasse, wenn direkt das Fenster "Speichern Unter" geöffnet würde.

Den Rest vom Makro bekomme ich denke ich selber hin, allerdings beiße ich mir hier die Zähne aus und bräuchte dringend die Hilfe von Profis!

Vielen Dank schon einmal im Voraus!

Marco112
Top
#2
Hi Marco,

Eines verstehe ich noch nicht:
(28.07.2016, 11:14)Marco112 schrieb: - Einfügen des Textes aus Zelle D1 bis auf die ersten 19 Buchstaben/Leerzeichen, dann stelle 18 + 19 in "D1" löschen

sollen nun die ersten 19 Zeichen in der Kopfzeile nicht verwendet werden?
Warum werden dann die Stellen 18 und 19 gelöscht? Die sind doch eh nicht dabei.

(28.07.2016, 11:14)Marco112 schrieb: Ich möchte mir ein Makro basteln, welches mir aus einer vom System erstellten Datei (.xls) eine vorzeigbare Datei erstellt.
Dazu soll eine Überschrift innerhalb der Datei über der Tabelle stehen. Ich habe versucht das Problem zu lösen, indem ich eine Kopfzeile einfüge, jedoch konnte ich das dann nicht im Makro einstellen, dass sich automatisch eine Überschrift aus Teilen von vorhandenen Feldern erstellt.

Es gibt zwei Möglichkeiten:
  1. Zuerst einmal setzt Du Dir mit Makro ("Kopfzeile_basteln") in einer Hilfsspalte (AA4 bis AA8) den Text so zusammen, wie Du ihn haben willst und weist ihn einer Variablen zu.
    Dann schreibst Du die Variable in den Kopfbereich der ersten Seite ("Kopfzeile_einfügen") .
  2. Du schreibst irgendwo in eine Hilfszelle (z.B. AA1) die Formel rein:
    =TEIL(D1;20;LÄNGE(D1)-19)& " Inventory "& TEIL(F1;11;4) & "-" & TEIL(F1;8;2) & "-" &TEIL(F1;5;2)
  3. weist ihn einer Variablen zu und schreibst den Inhalt der Zelle in den Kopfbereich der ersten Seite
anstelle der Variablen kannst Du auch gleich den Inhalt der Zelle AA1 oder AA8 in den Kopfbereich schreiben  ("Kopfzeile_einfügen2").

Option Explicit
Dim Kopftext As String

Sub Kopfzeile_basteln()
  '
  ' © Rabe 2016-07-31
  '
  '
  Range("AA4").FormulaLocal = "=TEIL(D1;20;LÄNGE(D1)-19)"
  Range("AA5").FormulaLocal = "=TEIL(F1;11;4)"
  Range("AA6").FormulaLocal = "=TEIL(F1;8;2)"
  Range("AA7").FormulaLocal = "=TEIL(F1;5;2)"
  Range("AA8") = Range("AA4") & " Inventory " & Range("AA5") & "-" & Range("AA5") & "-" & Range("AA7")
 
  Kopftext = Range("AA8").Value
End Sub

Sub Kopfzeile_einfügen()
  '
  ' © Rabe 2016-07-31
  '
 
  '
  Application.PrintCommunication = False
  With ActiveSheet.PageSetup
     .FirstPage.CenterHeader.Text = Kopftext
  End With
  Application.PrintCommunication = True
End Sub

Sub Kopfzeile_einfügen2()
  '
  ' © Rabe 2016-07-31
  '
 
  '
  Application.PrintCommunication = False
  With ActiveSheet.PageSetup
     .FirstPage.CenterHeader.Text = Range("AA1")
  End With
  Application.PrintCommunication = True
End Sub


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

Code erstellt und getestet in Office 15


Das "Speichern unter" muß nun noch eingebaut werden.
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Marco112
Top
#3
Hallo Rabe,

danke für deine Antwort. Es hat sich herausgestellt, dass ich keine Ahnung habe.
Es funktioniert nicht so wie ich mir das vorgestellt habe.

Als erstes zur frage des Löschens: die beiden zu löschenden Zeichen sind "/" welche nicht in der Zelle bleiben sollen, lediglich der rest.

Anscheinend ist mir auch nicht ganz klar, was ich nun in den Makrotext eingeben soll.
Mein Vorgehen:

- Ich erstelle ein Makro und speichere es ab.
- Ich gehe in das Makro, lösche alles was drin steht und setze dafür den von dir vorgeschlagenen Text ein.
- Ich speichere das Makro erneut und führe es aus.

Der Text für die Kopfzeile erscheint dann entweder garnicht, oder als XXX Inventory 2016-2016-30

Ich habe es mit der Formel versucht wie es bei dir unten auch steht. Die funktioniert top und ich kann sie auch nachvollziehen ;-D

Was jedoch nicht funktioniert ist, dass der Text irgendwie in die Kopfzeile gelangt.

Ich habe bereits mit den Makroteilen herumexperimentiert und dann an einem Punkt den ich nicht mehr nachvollziehen kann gemerkt, dass die FORMEL im Kopftext stand, was ja aber auch nicht mein Ziel ist.

Des Weiteren ist mir leider nicht klar, wie ich wo eine Variable zuweisen kann und diese dann in die Kopfzeile bringe.
Der Versuch es mir über das Forum zu erschließen schlug fehl Sad

Ich bin leider gerade völlig aufgeschmissen, und wäre sehr dankbar, wenn du mir noch einmal helfen könntest.


Angehängte Dateien Thumbnail(s)
   
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste