Gewisse Bereiche aus verschiedenen Dateien einfacher drucken

Guten Tag.
Ich denke zwar fast das es keine Lösung für mein Problem gibt, aber dennoch versuche ich hier mal mein Glück bei den Experten.
Ich habe für eine vielzahl von Kunden, jeweils einen Windowsordner und jeder Kunde hat darin jeweils für ein Jahr eine gleich aufgebaute Excel Dateien (zb: C:\Documents\Abrechnung\Max Mustermann).
Nun muss aktuell zum Monatsende jede Datei geöffnet, drei Blätter, die dem aktellen Monat entsprechen markiert und dann gedruckt werden.
Meine Frage ist nun: Kann man es irgendwie schaffen, zB. eine Auswahl zu erstellen, in der man einen Kunden auswählt, im Idealfall n Häckchen bei den zu druckenden Blättern setzt und auf „drucken“ klickt…
Ich nehme wie gesagt an das das ganze über die möglichkeiten übersteigt, aber ich dachte fragen kostet ja nix.
Danke schon mal im Voraus

lG TB

Hallo IG TB

Mit VBA, meine ich, ist das kein Problem, wenn Deine Ordner, Dateien und Tabellenblätter clever und systematisch aufgebaut und benannt sind.

Grüsse Niclaus

Hallo,

Eine Lösung für solche Probleme gibt es eigentliche immer. Es ist nur die Frage welche Möglichkeiten und Kenntnisse dir zur Verfügung stehen.
So eine Aufgabe kann man wahrscheinlich mittels einem speziellen Programm (in VBA, oder besser .Net) lösen und dem Anwender eine komfortable Möglichkeit zur Auswahl der Ausdruck zu Verfügung stellen.
Je nach monatlichem Aufwand wäre es dann ewt. auch sinnvoll, solch eine Entwicklung als Auftrag extern zu vergeben.

Tschau
Peter

Danke erstma an alle „Antworter“!

Ok, ich denke mal ich habe etwas zu hoch hinaus gezielt…

Ich habe jetzt zum einfachen testen erstmal in die Datei die jeder Kunde erhält ein einfaches Makro zum Drucken eingefügt.

Sub DruckenVieleTabellen()
Sheets(Array(„RJan“, „LJan“)).PrintOut
End Sub

Dazu noch einen Butten auf der Stammdatenseite.
Es müssen immer die R… und das entsprechende L… sheet gedruckt werden.
Es wäre mir schon seeeehr geholfen wenn ich jetzt auf dem Stammblatt, zusätzlich zu dem „drucken button“ noch irgendwie eine Auswahl (z.B. ein Dropdown) für die Monate treffen könnte.
Ist irgendwie eleganter als da nun 12 Button zu platzieren…

vielen Dank soweit

lG TB

Hallo IG TB

Dein Sub DruckenVieleTabellen könntest Du ergänzen:

Sub DruckenVieleTabellenV1()
On Error GoTo finis
mm = InputBox("Welcher Monat soll gedruckt werden?")
    Sheets(Array("R" & mm, "L" & mm)).PrintOut
    Sheets("R" & mm).Select
finis:
End Sub

Die Frage nach dem Monat wäre hier mit „jan“ zu beantworten.

Und eine Idee wäre: Du erstellst eine neue, zusätzliche Datei mit einer Tabelle, die etwa so ausschauen könnte:

DruckDatei

Ein Makro würde dann alle Kunden „abarbeiten“ und von jedem die Tabellen RJan und LJan ausdrucken. Was meinst Du dazu?

Grüsse Niclaus

Oh, ok…
Also zunächst einmal bin ich hoffnungslos verloren, bei dem Vesuch den Code nachzuvollziehen.
Wenn ich das so einfach einfüge, und ausführen will, kommt die Fehlermeldung "Fehler beim kompilieren - variable nicht gefunden.
Worüber soll denn die Auswahl des Monats erfolgen?

Deine Idee einer extra Datei finde ich klasse und spiegelt auch so ziemlich das wieder, was ich ursprünglich vor hatte.
Allerdings stellen sich mich dabei Fragen.
Kann die Datei dann automatisch erkennen, wenn ein neuer Kunde angelegt wurde?
Immerhin liegen die einzelnen Dateien micht alle direkt in \Abrechungen, sondern es wird für jeden Kunden ein Orner mit dem jeweiligen Namen angelegt. Dies ist notwendig, da die Möglichkeit bestehen soll/muss u.U. zusätzliche Datein mit Informaionen dem Kunden zuzuordnen.

Außerdem kommt es auch immer wieder vor, das nur einzelne Rechnungen ausgedruckt werden müssen.
Also wäre es quasi erforderlich das ich eine Auswahl des Kunden treffen kann, und zusätzlich noch den gewünschten Monat… :expressionless:

Vielen lieben Dank nochmal

lG TB

Zur Fehlermeldung im Makro: In Deinem VBA-Bereich steht zuoberst die Zeile: «Option Explicit». Stimmts oder hab ich Recht? - Dann muss man das Makro anpassen:

Sub DruckenVieleTabellenV1()
Dim mm$
On Error GoTo finis
mm = InputBox("Welcher Monat soll gedruckt werden?")
    Sheets(Array("R" & mm, "L" & mm)).PrintOut
    Sheets("R" & mm).Select
finis:
End Sub

Die Auswahl des Monats erfolgt über «InputBox». Dort muss man dann «Jan» eintippen.

Zu den andern Fragen:

«Kann die Datei dann automatisch erkennen, wenn ein neuer Kunde …» - Ja, kann sie. Besser gesagt, die Datei würde immer neu erstellt und aktualisiert und immer alle existierenden Kunden auflisten. - Neugierige Frage: Wie viel Dutzend neue Kunden hast Du denn pro Tag? Wäre es so schwierig, jeden neuen Kunden von Hand in diese Liste einzutragen?

«liegen die einzelnen Dateien nicht alle direkt in \Abrechungen:» Da müsste man halt Deine Ordnerstruktur ganz genau kennen.

«Außerdem kommt es auch immer wieder vor, dass nur einzelne Rechnungen …» : Auch das kein Problem: Ein Doppelklick z.B. auf die Zelle A8 (Max Mustermann) und die Datei wird geöffnet.

Grüsse Niclaus

C:\Users\TP01\Documents\Tagespflege\Abrechnung\PG 2 Hr. Max Mustermann\2019.xls
C:\Users\TP01\Documents\Tagespflege\Abrechnung\PG 5 Fr. Gabi Gibsnich\2019.xls

Im Ordner Abrechungen hat jeder Kunde, wie gesagt seinen eigenen Ordner.
Diese haben bei der benennung allerdings wenig gemeinsam. Jeder Ordner beginnt mit „PG 1-5“ und jeder Ordner hat den Eintrag „Hr.“ oder „Fr“.

Tatsächlich habe wir nur alle ein/zwei wochen einen neuen Kunden, insofern könnte man das auch händisch einpflegen. Allerdings habe ich bedenken dann doch regelmäßig in irgedwelchen Codes „zumzupfuschen“.

Das Problem ist tatsäch das geringste „Übel“

Gruß TB

Stimmt absolut!
Und diese Variante funtioniert auch ganz hervorragend!

Die „R“ sheets bestehen aus zwei zu druckenden Seiten.

  1. Seite = A1 - H59
  2. Seite = I1 - P59
    Ist es auch möglich die 2. Seite zwei mal ausdrucken zu lassen?

lG TB

Hallo TB

«Die „R“ sheets bestehen aus zwei zu druckenden Seiten. Ist es auch möglich die 2. Seite zwei mal ausdrucken zu lassen?» Das geht so:

Sub DruckenVieleTabellenV2()
On Error GoTo finis
Dim mm$
mm = InputBox("Welcher Monat soll gedruckt werden?")
    Sheets(Array("R" & mm, "L" & mm)).PrintOut
    Sheets("R" & mm).Select
    ActiveSheet.PrintOut From:=2, To:=2
finis:
End Sub

Gedruckt werden die ganzen Tabellen R und L und anschliessend noch die zweite Seite von R.

Zum andern: Ordnerstruktur. Das wird kompliziert. Du müsstest in meiner vorgeschlagenen zusätzlichen Datei nicht die Kundennamen sondern die genauen Datenpfade angeben. Ausser „2019.xls“ lässt sich da nicht viel automatisieren!

DruckTabelle

Grüsse Niclaus

Meine aktuelle Ordnerstrucktur ist nicht in Stein gemeißelt.
Wenn ich eine entsprechende „Extra Datei“ hätte, in die noch ein paar zusätzliche Funktionen eingebaut werden, müsste ich die einzelnen Dateien der Kunden ja gar nicht mehr anfassen!
Vielleicht könnte man ja das anlegen neuer Kunden direkt über die Datei machen :neutral_face:

Ich habe in meinen uralten Dateien etwas gefunden, das Dir helfen könnte: In dieser Datei wird eine Liste erstellt mit allen Dateien, deren Dateinamen auf „2019.xls“ oder „2019.xlsx“ usw. enden. Ich lade sie hoch. Sie enthält Makros in rauen Mengen. Ich hoffe, Du kannst „makrotisierte“ Dateien herunterladen!

Schau mal, ob diese Makros machen, was sie sollten! Vor allem ob wirklich alle relevanten Dateien aufgeführt sind! Sie wäre die Grundlage für Dein allererstes Problem: Dateien zu öffnen und bestimmte Tabellenblätter davon zu drucken.

Weiter kannst Du in der Liste, die dort gebildet wird, auf einen Dateinamen doppelklicken. Es wird dann diese Datei geöffnet.

Noch etwas zu Deinen Ordner- und Dateinamen: Alle Dateien, die Du als Beispiel aufgeführt hast, heissen „2019.xls“. Das ist nicht sehr glücklich! Die Dateien müssten sich unterscheiden! So kannst ja nie gleichzeitig die Abrechnungen von zwei Kunden öffnen! Und dann die Punkte in einem Ordnernamen! Da sträuben sich mir die Haare. Das Hr. und Fr. ist doch absolut nicht nötig! Und Leerschläge sind auch nicht so nach meinem Gusto: Also statt:
C:\Users\TP01\Documents\Tagespflege\Abrechnung\PG 2 Hr. Max Mustermann\2019.xls
C:\Users\TP01\Documents\Tagespflege\Abrechnung\PG 5 Fr. Gabi Gibsnich\2019.xls
besser:
C:\Users\TP01\Documents\Tagespflege\Abrechnung\PG2_MaxMustermann\MaxMustermann_2019.xls
C:\Users\TP01\Documents\Tagespflege\Abrechnung\PG5_GabiGibsnich\GabiGibsnich_2019.xls

Und zum Schluss noch: Du arbeitest mit „xls“-Dateien. Welche Excel-Version hast Du?
Grüsse Niclaus
Dateiliste erstellen

1 Like

Wow!
Funktioniert wunderbar.
Die entsprechenden Dateien werden ohne Probleme aufgelistet.
Das Datum der letzten änderung wird angezeigt.
Allerdings erschließt sich mir die Spalte „Druck“ noch nicht so ganz…

Ach und ich benutze Office 2016

Besteht jetzt noch die Möglichkeit in der Spalte „C“ und folgenden, gewisse Zellen der davor gelisteten Datei aufzuführen?
Das Würde mich mit dem Problem der fortlaufenden Rechnungsnummern einen extremen Schritt weiter bringen!
Brauche ich dafür überhaup ein Macro?

Gruß TB

Hallo TB

«Die entsprechenden Dateien werden ohne Probleme aufgelistet.»##

Das ist einmal der erste Schritt! Eine Frage dazu: Wenn Du in der Liste in Spalte A auf eine Datei doppelklickst, wird sie auch geöffnet? – Das ist nämlich auch in einem Makro hinterlegt:
Sub Workbook_SheetBeforeDoubleClick unter „Diese Arbeitmappe“.

Wichtig ist dabei, was ich Dir am 26.04.2019, 22:28 Uhr gesagt habe: Alle Deine Dateien heissen „2019.xls“. Das ist ein Horror!! Das musst Du unbedingt ändern: Also z. B. „MaxMustermann_2019.xls“ oder „MM_2019.xls“ oder „GabiGibsnich_2019.xls“ oder „GG_2019.xls“. Hast Du das gemacht? Sonst müssen wir hier gar nicht weitermachen!

##«Allerdings erschließt sich mir die Spalte „Druck“ noch nicht …»##
Das gehört zur „Planungsphase“! Ganz zu Beginn am 24. April hast Du ja gefragt: «Nun muss aktuell zum Monatsende jede Datei geöffnet, drei Blätter, die dem aktuellen Monat entsprechen markiert und dann gedruckt werden. Meine Frage ist nun: Kann man es irgendwie schaffen, zB. eine Auswahl zu erstellen, in der man einen Kunden auswählt, im Idealfall ein Häkchen bei den zu druckenden Blättern setzt und auf „drucken“ klickt…»

Das „p“ in Spalte C steht statt einem Häkchen! In einem nächsten Schritt würden dann alle Dateien gedruckt, die mit „p“ versehen sind. Wenn „p“ gelöscht wird, wird die entsprechende Datei nicht gedruckt. Dazu muss dann eingearbeitet werden das Makro
DruckenVieleTabellenV2() – siehe oben 26.04.2019, 14:48 Uhr
Gedruckt würden dann von jeder Datei, die ein „p“ ausweist, die ganzen Tabellen RJan und LJan und anschliessend noch die zweite Seite von RJan. Wäre das in Deinem Sinn?

##«Besteht jetzt noch die Möglichkeit##
in der Spalte "C"und folgenden gewisse Zellen der davor gelisteten Datei aufzuführen?» Die Möglichkeit besteht. Ich verstehe allerdings nicht, was Du damit genau meinst, und vor allem, was Du damit genau bewirken willst.

Grüsse Niclaus

Ja, das wird sie.

Ja, das habe ich.

Ja, das wäre es. Und ich finde die Möglichkeit wirklich super, allerdings ist das setzen eines „häkchens“ noch etwas Komfortabler.

Nun, es handelt sich bei deiner Datei um so eine art „Startdatei“.
Über diese würde ich u.U. in einem neuen Sheet (so genau ist das noch nicht zuende gedacht) gerne Übersichten zu Umsetzen oder Statistiken ziehen etc. Außerdem könnte ich mir so auch immer die letzte bzw. höchste, verwendete Rechnungsnummer anzeigen lassen. So würde ich mich leichter tun, bei der Vergabe der Rechnungsnummern. Vielleicht könnte ich das über diesen Weg sogar irgendwie automatisieren.

Wirklich vielen lieben Dank für die ganze Mühe! Ich gebe dann mal einen aus :wink:

Gruß TB

##setzen eines „Häkchens“ etwas komfortabler ##

Dein Wunsch sei mir Befehl! – Aber sage bitte nicht, Du möchtest ein anderes Häkchen!

##Vergabe der Rechnungsnummern ##

Das kannst Du so machen: Sofern die Datei „00_Datei_Liste.xlsm“ geöffnet ist, kannst Du in irgendeiner Datei die Tastenkombination CTRL-SHIFT-N drücken und es wird die neueste Rechnungsnummer eingefügt. Ginge selbstverständlich auch über die PERSONAL.XLSB.

##in einem neuen Sheet … gerne Übersichten … oder Statistiken ##
Kann man sicher auch bewerkstelligen, könnte aber etwas kompliziert werden!

In der Tabelle „Hinweise“ in der Datei „00_Datei_Liste.xlsm“, die ich Dir hier in der neuen Version hoch lade, findest Du noch einige weitere Details zum Ganzen. Schau Dir das an und sag mir bitte, ob alles funktioniert.

##gebe dann mal einen aus ##
Im Bahnhof Zürich? Da bin ich jeden Abend. Oder im Flughafen Kloten?
Grüsse Niclaus

Datei-Liste Version 2

Vielen Dank für die ganzen Mühen!!!

Ich muss aber tatsächlich ein wenig zurück rudern…
In der Handhabe hat sich ergeben, das sich für unsere Zwecke, damit leider nicht komfortabel arbeiten lässt.

Zu allererst ist es etwas unpraktisch das sich immer ein neues sheet erstellt.
Hier wäre es angenehmer wenn es ein bleibendes wäre, auf dem man quasi ein „aktualisieren“ Button hätte.
Auf diesem sheet möchte ich dann hinter dem enstprechenden Kunden verschiedene Werte aus der gelisteten Datei abfragen und weiter auswerten. Mit diesen Werten möchte ich in der Datei dann gerne weiter rechnen (Statisktiken, Übersichten, Gesamtzahlen etc.).
Tatsächlich wird das „drucken“ aus der Kundenübersicht quasi gar nicht gebraucht.
Auch der Ordnerpfad verwirt eher.

Ich weiß nur noch nicht ob es nicht zielführender wäre, für das Thema „auslesen und Aktualisieren von Excel-Dateien“ einen neuen Threat zu eröffnen.

Ich habe aktuell noch keinerlei Idee wie man jetzt bestimmen kann
, zeige in Zelle xy den wert aus der aufgelisteten Dabei, aus sheet sowieso und z.B. zelle a11 an.

Da lässt sich sicher was organisieren! Eine beforzugte Lokalität ist vorhanden?

Ein neuer Threat: Da bin ich gleicher Meinung. Aber überlege Dir ganz genau, was Du willst. Mache das doch übungshalber für 5, 6 Kunden von Hand mit Formelbezügen zu den einzelnen Dateien und Tabellen.
Und wie man das macht? - Gib einfach in irgendeiner Datei in Zelle xy folgende Formel ein:

=\'C:\Users\TP01\Documents\Tagespflege\Abrechnung\[Anna Musterfrau 2019.xls]RJan\'!$A$11

Dabei siehst Du auch, dass Du ohne Ordnerpfad nicht weiterkommst.

Grüsse Niclaus