Startseite » Technik »

Aus Excel an die Säge

Technik
Aus Excel an die Säge

Viele Kollegen erstellen Stücklisten im Microsoft-Programm Excel. dds-Autor Daniel Wagner beschreibt, wie man diese Daten exportiert, damit sie von den gängigen Zuschnittoptimierungen gelesen werden können.

In der Arbeitsvorbereitung gibt es tagtäglich viele Probleme und Problemchen zu bewältigen. Wir stellen Ihnen in dieser und den nächsten Ausgaben ausgewählte Lösungsansätze vor, um mithilfe selbstgeschriebener Softwareanpassungen, z. B. in Excel-VBA, wiederkehrende Arbeitsschritte zu automatisieren, um somit Zeit zu sparen und Fehler zu vermeiden.

Microsoft Office Excel ist ein hervorragendes Programm: Jeder kennt es, beinahe jeder kann es bedienen und fast jeder hat es. Welches Programm wäre also besser geeignet um darin Stücklisten zu erstellen, die anschließend mithilfe einer Zuschnittoptimierung für die Produktion vorbereitet werden?
Excel hat seine Berechtigung
Es mögen nun manche einwenden, dass Stücklisten heute immer häufiger in Branchen- und CAD-Programmen erstellt werden. Allerdings kann Excel gegenüber diesen Programmen mit einigen Vorteilen aufwarten: Exceltabellen können auch von weniger versierten Anwendern ausgefüllt oder zum Austausch mit anderen Firmen genutzt werden, z. B. als Bestellliste für Schreinerkollegen mit direkter Ausgabe von Preisen. Das ist mit vorgenannten Programmen kaum möglich.
In diesem Artikel wird es darum gehen, wie sie eine Stückliste aus Excel mittels VBA (s. Infokasten VBA) exportieren können, sodass die Exportdatei von den meisten gängigen Zuschnittoptimierungen importiert werden kann.
Im folgenden Beitrag (dds 9/2011) wird dann gezeigt, wie der komplette Optimierungsvorgang aus Excel heraus automatisiert werden kann, ohne dass Sie als Anwender noch manuell eingreifen müssen. Dies funktioniert allerdings nicht mit jeder Zuschnittoptimierung, da diese hierfür spezielle Funktionen bereitstellen muss. Daher haben wir uns in diesem Beispiel für die Zuschnittoptimierung Schnitt Profi(t) aus dem Hause Holzma entschieden.
Die Beispieldateien zu diesem Artikel können Sie unter www.dds-online.de, Bereich Medienbibliothek, herunterladen. Das Beispiel ist bewusst einfach gehalten, um Ihnen für weitere Ideen und Anpassungen als Basis zu dienen.
Die Ausgangslage
Für die Funktionsweise der Excel-Stückliste nehmen wir folgende Prämissen an: Es soll einen Bereich geben, in dem wir die zu verwendenden Platten und Kanten vordefinieren können (Abb. 2). Prinzipiell hätte man die Tabelle auch noch um Beläge wie HPL/Furnier erweitern können. Aber um das Beispiel möglichst einfach zu halten, haben wir zunächst darauf verzichtet. Diese vordefinierten Platten und Kanten können anschließend in der Stückliste mittels Dropdownbox ausgewählt werden.
Die Maßangabe für Zuschnitte soll im Fertigmaß erfolgen. Zudem sollen zwei Spalten für Aufmaße in der Länge und Breite bereitgestellt werden, um eventuelle Übermaße angeben zu können, falls Bauteile furniert oder Gehrungen geschnitten werden müssen. Zu guter Letzt soll selbstverständlich noch die Kantenbelegung angegeben werden können für vorne (V), hinten (H), links (L) und rechts (R). In den Kantenfeldern sollen lediglich die Nummern der Kanten angegeben werden, die Sie zuvor definiert haben. So bleibt die Liste übersichtlich.
Was soll erreicht werden?
Was muss nun der Export an die Zuschnittoptimierung alles leisten? Zunächst sollen nur die Zeilen exportiert werden, in denen sich auch Einträge befinden. Des Weiteren muss das Fertigmaß um das angegebene Aufmaß und die Kantendicke(n) korrigiert werden. Statt der Nummer, die für die Kanten in jeder Zeile angegeben wurden, sollen zudem nicht die Kennzahlen selbst, sondern die Kantentexte exportiert werden. In der Exportdatei entspricht jede Zeile einer Excel-Stücklistenzeile, die einzelnen Informationen innerhalb der Zeile werden durch ein sogenanntes Trennzeichen voneinander getrennt. In unserem Beispiel verwenden wir ein Semikolon als Trennzeichen.
Arbeiten mit dem VBA-Editor
Wenn Sie die Beispieldatei unter Excel 2007/2010 öffnen, so erhalten Sie unter Umständen eine Sicherheitswarnung »Makros wurden deaktiviert« und einen Schalter mit Optionen. Klicken Sie auf die Optionen und wählen Sie »diesen Inhalt aktivieren« und bestätigen Sie mit OK, um Makros einsetzen zu können (Abb. 3). Wenn Makros nicht aktiviert sind, so macht Sie beim Versuch, ein Makro auszuführen u. U. eine Fehlermeldung darauf aufmerksam (Abb. 4). Diese Sicherheitswarnung kann auch gänzlich in den Excel-Optionen ausgeschaltet werden, allerdings rate ich hiervon ausdrücklich ab, denn Makros aus unbekannten Quellen können ein erhebliches Sicherheitsrisiko darstellen.
Um in die VBA-Entwicklungsumgebung zu gelangen, drücken Sie bei geöffneter Exceltabelle gleichzeitig Alt+F11. Auf der linken Seite sehen Sie den sogenannten Projektbaum, in dem sich verschiedene Elemente befinden (Abb. 5). Klicken Sie doppelt auf das Element, das mit »Tabelle1 (Tabelle1)« benannt ist. Daraufhin öffnet sich im Codefenster auf der rechten Seite der VBA-Programmcode für das Tabellenblatt »Tabelle1«. Der für den Export benötigte Programmcode ist in diesem Beispielprojekt bereits hinterlegt.
Wer das Beispiel nachvollziehen oder eigene Anpassungen daran vornehmen möchte, der kommt nicht umhin, sich mit den nötigsten Sprachbestandteilen von VBA auseinander zu setzen. Da eine tiefergehende Erklärung im Einzelnen den Rahmen dieses Artikels sprengen würde, finden Sie am Ende des Artikels die Internetlinks [2] bis [4], unter denen näher auf die Funktionsweise des jeweiligen Sprachkonstrukts eingegangen wird.
Die Zeilen im Einzelnen
Zunächst werden am Anfang der Prozedur »ErzeugeStueckliste()« die Variablen deklariert (Abb. 6). Variablen werden in der Programmierung verwendet, um ihnen Werte zuweisen und an anderer Stelle wiederverwenden zu können. Dieses Prinzip findet sich auch sehr häufig in Wop-, Branchen- und CAD-Programmen wieder. In VBA können unterschiedliche Typen von Variablen deklariert (=erstellt) werden. Dazu gehören Variablen für Ganzzahlen (z. B. Integer), Text (String) oder Dezimalzahlen (z. B. Double). Mit einer Variablen vom Typ »Integer« können Sie dann z. B. Berechnungen anstellen, was im weiteren Verlauf des Programmes auch geschieht.
In Zeile 5 (Abb. 6) wird das Trennzeichen definiert, mit dem in der Exportdatei die Informationen voneinander getrennt werden. Wenn Sie ein anderes Trennzeichen statt dem voreingestellten Semikolon wünschen (z. B. einen Doppelpunkt), so können Sie das an dieser Stelle ändern. In Zeile 6 (Abb. 6) wird das Dezimaltrennzeichen für Kommazahlen definiert. Standardmäßig würde ein Komma für Dezimalzahlen verwendet. Viele Optimierungsprogramme erwarten an dieser Stelle allerdings einen Punkt als Dezimaltrennzeichen.
Um Anwendern die Möglichkeit zu geben, einen Speicherort zu wählen und einen Namen für die Exportdatei vergeben zu können, wird in Zeile 28 und 29 (Abb. 7) mit der Funktion »GetSaveAs FileName« (nähere Informationen unter [2]) ein Speicherdialog geöffnet. An die Funktion kann ein Pfad übergeben werden, der beim Öffnen des Speicherdialoges automatisch angezeigt wird. Als zweiten Parameter können Sie der Funktion mitteilen, wie die Dateiendung lauten soll. In diesem Beispiel voreingestellt ist die Dateiendung »*.txt«. Wenn Sie eine andere Dateiendung benötigen, dann können Sie das an dieser Stelle ändern.
Sollte der Anwender im Speicherdialog »Abbrechen« wählen, so wird darauf in Zeile 30 (Abb. 7) reagiert und die gesamte Prozedur wird abgebrochen. Hat der Anwender den Dialog mit »OK« bestätigt, so wird in Zeile 32 (Abb. 7) eine neue Textdatei erzeugt, in die wir nachfolgend die einzelnen Stücklistenzeilen hineinschreiben werden. Das Durchlaufen der Stücklistenzeilen in der Exceltabelle beginnt in Zeile 34 mit einer sog. For-Schleife (Abb. 7): For Zeile = 16 To Cells(Rows.Count, 2). End(xlUp) .Row.
Tiefergehende Kenntnisse zur For-Schleife vermittelt [3]). Diese Schleife durchläuft bei Zeile 16 beginnend jede Zeile der Exceltabelle. Da ab Excel 2007 über eine Million. Zeilen verwendet werden können, wird diese Schleife allerdings eingeschränkt, um nicht bei jedem Export eine Kaffeepause einlegen zu müssen. Das geschieht mit der Funktion »Cells(Rows.Count, 2).End(xlUp) .Row«. Hier wird in einer bestimmten Excel-Spalte nachgesehen, in welcher Zeile sich der letzte (sozusagen der unterste) Eintrag befindet. In unserem Beispiel wird die Spalte »2« (= Spalte »B«) verwendet, in der der Anwender die Stückzahl eintragen muss. Befindet sich also der letzte Eintrag in Zeile 23 der Exceltabelle, so werden alle Zeilen von 16 bis 23 durchlaufen und exportiert. Die Zeile der Tabelle, die aktuell in der For-Schleife verarbeitet wird, speichern wir in der Variablen »Zeile«, um im weiteren Verlauf damit arbeiten zu können.
Ab Zeile 39 (Abb. 7) werden die Werte der aktuellen Zeile zunächst in Variablen zwischengespeichert. Wichtig ist, dass den Variablen »L« (=Zuschnittlänge) und »B« (=Zuschnittbreite) gleich das Aufmaß hinzugerechnet wird, sofern der Anwender in der Tabelle ein Aufmaß angegeben hat. Mit den Werten, die den Variablen zugewiesenwurden können nun Berechnungen angestellt werden.
Ab Zeile 50 (Abb. 8) werden also nun die tatsächlichen Zuschnittmaße berechnet, da in der Exceltabelle die Fertigmaße inkl. Kanten vom Anwender eingegeben werden. Von Zeile 50 bis 61 geschieht das für die Kante vorne. Mithilfe einer sogenannten »Select Case«-Anweisung (nähere Informationen unter [4]) wird überprüft, welche Kantenzahl der Anwender bei »Kante vorne« eingegeben hat. Da in unserem Beispiel max. drei unterschiedliche Kanten definiert werden können, wird in der Select Case-Anweisung auch nur auf die Ziffern 1, 2 und 3 geprüft. Wenn Sie in Ihrer eigenen Anwendung später mehr Kanten definieren möchten, dann können sie diesen Bereich natürlich um 4, 5, 6 etc. ohne Probleme erweitern.
Betrachten wir uns die Zeile 52 (Abb. 8) genauer: Wenn der Anwender bei »Kante vorne« eine »1« eingetragen hat, so werden nachfolgend die Zeilen 53 und 54 bearbeitet. In Zeile 53 wird von der Fertigbreite die Kantendicke der Kante 1 subtrahiert. Das entspricht dem Eintrag im Excelfeld »D9«. Sollten Sie in ihrer Firma alle Kanten an der Kantenanleimmaschine vorfräsen (was wir in unserem Beispiel nicht berücksichtigen, um es einfach zu halten), so können Sie das an dieser Stelle einbauen. Angenommen, bei Ihnen wird jede Kante unabhängig von Kantenstärke standardmäßig 1 mm vorgefräst, so könnte die Zeile 53 z. B. lauten:
B = B – Range(»D9«) + 1
Das bedeutet: Sollte der Anwender eine Kante eingetragen haben, so wird die Kantendicke abgezogen und für das Vorfräsen 1 mm hinzuaddiert.
Bis zur Zeile 100 wird die Prüfung auch noch für die Kanten »hinten«, »links« und »rechts« vorgenommen.
Interessant wird es nun wieder in der Zeile 114 (Abb. 9). Mit der Anweisung »Print #1« werden in die Textdatei die Werte geschrieben, die in den Variablen zwischengespeichert wurden. Möchten Sie die Reihenfolge, in der die Werte in der Textdatei erscheinen, ändern, so ist dies die richtige Stelle um das zu tun.
In der Zeile 127 endet die For-Schleife und wird so lange wiederholt, bis alle Stücklistenzeilen durchlaufen wurden. Ist die Schleife zu Ende, so springt das Programm weiter zu Zeile 128, in der die Exportdatei mit der Anweisung »Close #1« endgültig geschlossen wird.
Das Programm testen
Damit wäre die Exportdatei bereits in dem von Ihnen gewählten Pfad erzeugt. Nach so viel – zugegebenermaßen teils ermüdender – Theorie können Sie es hoffentlich kaum erwarten, das Programm zu testen. Hierzu gibt es verschiedene Möglichkeiten. Die Einfachste ist, den Mauscursor in eine beliebige Zeile innerhalb unseres VBA-Programmes zu setzen und die Taste F5 zu drücken. Daraufhin startet das Programm und es sollte sofort der »Speichern unter«-Dialog erscheinen, in dem Sie den Pfad und den Namen der Exportdatei festlegen. Sollte der Anwender falsche Eingaben in der Stückliste getätigt haben (z. B. bei »Stückzahl« einen Buchstaben eingeben), so kommt es beim Verarbeiten des Makros unweigerlich zu einem Fehler und der Export bricht an dieser Stelle ab. Daniel Wagner
Im folgenden Beitrag (dds 9/2011) wird gezeigt, wie der komplette Optimierungsvorgang aus Excel heraus automatisiert werden kann.

Kompakt Der VBA-Editor
»Visual Basic for Applications« (VBA) ist eine zu den Microsoft-Office-Programmen gehörende Skriptsprache. Sie wurde aus dem von Microsoft entwickelten Basic-Dialekt »Visual Basic« (VB) abgeleitet und zur Steuerung von Abläufen innerhalb der Microsoft- Office-Programme entwickelt. VBA ist die am stärksten verbreitete Möglichkeit, auf Microsoft-Office-Anwendungen (Excel, Word, Access etc.) basierende Programme zu erstellen. (Quelle: Wikipedia)

Der Autor
Daniel Wagner unterstützt mit seinem Unternehmen Schreinerservice24 Betriebe bei der Organisation der Arbeitsvorbereitung.
Der Autor freut sich über Ihre Fragen, Anregungen oder Themenvorschläge. Kontakt: dw@schreinerservice24.de
Schreinerservice24 13595 Berlin Tel.: (030) 243557-67, Fax: -68 www.schreinerservice24.de
Aktuelles Heft
Titelbild dds - das magazin für möbel und ausbau 6
Aktuelle Ausgabe
06/2022
EINZELHEFT
ABO
dds-Zulieferforum
Neuheiten 2022
Tischlerhandwerk in Zahlen

Zahl der Betriebe im Tischlerhandwerk

dds auf Facebook


dds auf YouTube

Im dds-Channel auf YouTube finden Sie:
– Videos zu Beiträgen aus dds
– Kollegen stellen sich vor
– Praxistipps-Videos
– Maschinen & Werkzeuge

Abonnieren Sie dds auf YouTube »