MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 14.04.2019, 17:21   #1
mailmir
MOF User
MOF User
Standard VBA - Position auf der Seite ermitteln

Hallo zusammen,

Kurz zur Ausgangslage:

Ich bin gerade beim erstellen einer Vorlage mit mehreren Tabellen. Die Tabellen werden aus einer eingelesenen csv-Datei befüllt und je nach Datenmenge können diese Tabellen 1 Zeile oder auch 1000 Zeilen enthalten. Je nach csv können Daten einer Tabelle oder mehrerer Tabellen enthalten sein.

Nun zu meiner Frage:

ich möchte die Seitenumbrüche möglichst 'intelligent' einfügen. Blöd schaut es aus wenn eine Tabelle am Ende einer Seite startet, vielleicht 1-2 Zeilen enthält und dann ein Seitenwechsel folgt, wo die Tabelle weiter geht( vielleicht sogar nur mit einer weiteren Zeile.
Da ich die Anzahl der Zeilen der jeweiligen Tabelle abfragen kann würde ich in dem Falle oberhalb der Tabelle (mit 3 Einträgen) einen Zeilenumbruch einfügen. Mein Problem ist nun nur, wie kann ich die aktuelle Position auf der Seite ermitteln?
Einer meiner Gedanken war für jede Zeile eine definierte höhe zu nehmen und dann zu prüfen wie viele Zeilen auf eine Seite passen. Ungenau wird das ganze sobald in einer Zelle mehr text ist, sodass 2 oder mehr Zeilen benötigt werden. Somit ist dieser Lösungsansatz nicht gerade optimal. Perfekt wäre es, nach die Position innerhalb der aktuellen Seite zu kennen.

Gruß Norbert

__________________

DANKE für eure Hilfe und ein Gruß aus Vorarlberg.

man(n) muss das Unmöglichste versuchen um das Möglichste zu erreichen.
mailmir ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.04.2019, 21:45   #2
Mase
MOF User
MOF User
Standard

Hi Norbert,

sind die CSV gleich aufgebaut?
Anzahl Spalten konstant, Anzahl Zeilen variabel?
Hat die CSV Überschriften?
Sind die Anzahl Zeichen je Spalte begrenzt?

Hoch/Querformat?
DINA4?


Gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 04:58   #3
mailmir
Threadstarter Threadstarter
MOF User
MOF User
Standard ja, ja, ja, ja, nein, Hochformat,ja

Guten Morgen

DANKE Marco für deine vielen Fragen

- JA, die csv sind vom Prinzip her immer gleich aufgebaut.
- JA, die Anzahl der Spalten ist konstant und in allen Tabellen gleich

Da es sich immer um die selbe Datenherkunft handelt kann davon ausgegangen werden dass der Aufbau der csv, rein von der Struktur her, immer gleich ist

- Ja, die Anzahl der Zeilen ist Variabel (von 1 - ca. 1000)

Genau das ist die Herausforderung. Jede Tabelle hat unterschiedliche, vorher nicht absehbare Anzahl von Datensätzen. Daher muss ich die Position auf der Seite bestimmen/erkennen um zu wissen ob/wann ich eine neue Seite beginnen sollte/muss

- JA, die Spalten haben Überschriften

Diese Überschriften mache ich dann mit einer Initialisierung. Wenn ich "weiß" dass es die Überschrift braucht kann ich diese auch erstellen/einfügen.

- NEIN, die Anzahl der Zeichen pro Spalte sind nicht begrenzt

Je nach Datensatz können hier mehrere Zeilen notwendig sein, auch wenn der Normalfall nur eine Zeile sein wird. (nichts ist so normal wie die Ausnahme)

- (bisher) Immer Hochformat
- JA, Format ist Din A4

Wenn die Formatierung funktioniert dann wird es hier sicher weitere Anwendungsbereiche geben.

Gruß Norbert

__________________

DANKE für eure Hilfe und ein Gruß aus Vorarlberg.

man(n) muss das Unmöglichste versuchen um das Möglichste zu erreichen.
mailmir ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 06:43   #4
Mase
MOF User
MOF User
Standard

Moin Norbert,

danke für die Infos.

Als Beispiel zur Positionsermittlung nehmen wir hier aktive Zelle:

Code:

'ab der aktuellen Position nach unten gehen, bis eine Zelle mit Inhalt getroffen wird
ActiveCell.End(xlDown).Select
'noch oben gehen, bis eine Zelle mit Inhalt gefunden wird
ActiveCell.End(xlUp).Select

'Höhe der Zeile ausgeben, wobei 28.25 ~1cm sind
'nun kannst Du die Summe der noch freien Zellen ermitteln um zu wissen, wieviel Platz auf deiner Seite zur Verfügung steht
ActiveCell.RowHeight
Du könntest deine Daten auch zuvor in einem temporären Blatt einlesen, um dann zu schauen, wie sich das Blatt verhält (da wir ja nicht wissen, wieviel Text in einer Zeile ausgegeben wird) und dann entsprechend deine Seitenumbrüche planen und in dem Ausgabeblatt anwenden.

Noch n Gedicht:
Wie liest du deine CSV ein bzw. kannst Du während dem einlesen die Anzahl Zeichen je Zeile mitlesen oder geht alles über den Assistenten?



gruß
Marco

Geändert von Mase (15.04.2019 um 06:44 Uhr). Grund: fehlende Worte
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 07:09   #5
Mase
MOF User
MOF User
Standard Nachtrag

Im Seitenlayout, abhängig von der eingestellten Zeilenhöhe, können wir ablesen, wieviel Zeilen pro Blatt verwendet werden können, bevor ein Seitenumbruch stattfindet.

Noch n gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 09:50   #6
Flotter Feger
MOF Profi
MOF Profi
Standard

Hallo,

Zitat:

Jede Tabelle hat unterschiedliche, vorher nicht absehbare Anzahl von Datensätzen.

dazu mal eine vielleicht dumme Frage ...

Es kommt dir doch darauf an, dass die "verschiedenen Tabellen" getrennt werden.
Was ist denn das Merkmal für die Tabellen ... sprich, woran erkennst du, wo der Cut ... die neue Seite ... sein soll ?

Ich denke, das Beste wäre, eine Musterdatei mit deiner Excel-Datei, inklusive deinem Code, in der deine Wunschvorstellung händisch eingetragen ist. Und es sollten tatsächlich eine XLSM und eine passende CSV in einem ZIP sein. Denn nur so kann man da auch mal ausprobieren, was geht und was nicht.

__________________

VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
War der Post für dich hilfreich, darf er von dir auch gerne positiv bewertet werden.
bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit

Geändert von Flotter Feger (15.04.2019 um 09:57 Uhr).
Flotter Feger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 18:42   #7
mailmir
Threadstarter Threadstarter
MOF User
MOF User
Standard Wenn der tag doch nur mehr Stunden hätte. . . . .

Die zeit rennt. . . . .

DANKE für eure Antworten.
Ich habe am Wochenende wieder Zeit dies auszuprobieren.

noch zu den Fragen:

derzeit habe ich eine xls-Datei, wo ich aus einem CAD-Programm Daten bekomme. Es handelt sich hier um Daten aus einem Elektroschema aus dem Schaltschränke gebaut werden. Diese Daten filtere und sortiere ich nach bestimmten Kriterien und schreibe diese in eine neue (zwischen)-Tabelle.
Die Daten haben immer eine Kennung zu welcher Anlage diese gehören (LUE01 - für Lüftungsanlage 1, KAE13 für Kälteanlage 13 usw.) Anhand dieser Kennung, die ich mit einem VBA-Script aus dem Text "aussortiere" kann ich diese Daten dann sortieren um danach getrennte Tabellen für jede Anlage zu erstellen. Die Überschrift für die Tabelle bekomme ich von einer Auflistung (LUE01 = Lüftung Büro) usw. Ich kann also vor dem "sortieren" die Daten auf Länge und Anzahl prüfen.

Bei einer 2ten Anwendung bekomme ich die Daten von einem anderen Programm, hier als CSV. Dieses habe ich letztes Wochenende auch immer "händisch" mit Excel geöffnet, aber das Ziel ist natürlich diese csv auch automatisch, über ein Script einzulesen und die Datensätze in die Zellen zu verteilen. So hätte ich die selbe Ausgangslage wie bei meinen Versuchen vom letzten Wochenende.

Zum Schluss sollen dann saubere Listen mit allen zugehörigen Daten der Anlagenteile, als Dokumentation, erstellt werden. bisher wird vieles händisch zusammenkopiert, texte bearbeitet, Seiten formatiert usw.

__________________

DANKE für eure Hilfe und ein Gruß aus Vorarlberg.

man(n) muss das Unmöglichste versuchen um das Möglichste zu erreichen.
mailmir ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 18:45   #8
mailmir
Threadstarter Threadstarter
MOF User
MOF User
Standard csv-Import

zum csv-Import habe ich mal kurz google gefragt, hier mal ein Link. Das werde ich auch am Wochenende testen. . .

__________________

DANKE für eure Hilfe und ein Gruß aus Vorarlberg.

man(n) muss das Unmöglichste versuchen um das Möglichste zu erreichen.
mailmir ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.