Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel: Makro für Datenübertrag





Frage

Einen schönen guten Tag, an die Mitglieder dieses Forums. Hier meine Grundinformationen: Ich habe mir einen Rechnungsvordruck (in Form einer Briefvorlage) gemacht, in dem die entsprechenden Daten mittels Makro automatisch übertragen werden. Ebenso per Makro wird eine laufende Rechnungsnummer vergeben und die Vorlage automatisch mit einem neuen Namen in dem dazu gehörenden Verzeichnis gespeichert. (Beispiel: Re 99 33.xls) Jetzt zu meiner Problemstellung: Per Makro möchte ich die einzelnen Werte, wie zum Beispiel: Datum (15.05.2006) Kundenkurzschlüssel (33) 1. Adresszeile (Mustermann GmbH & Co.) Debitorennummer (12301) Rechnungsnummer (12301/099) Brutto (116,00) Netto (100,00) in eine andere Tabelle in eine Zeile übertragen. Das ist für mich kein größeres Problem. Das Problem ist, ich habe keinen Makrobefehl gefunden, der a) die Anzahl der belegten Zeilen in der neuen Tabelle (Ausgangsbuch.xls) ermittelt und die Eingabemarke eine Zeile in der Spalte A tiefer setzt, um dort durch das Makro eine neue Zeile einfügen zu können, b) das Makro unabhängig des Dateinamens und des Register- namens der Rechnungsdatei die Werte ausliest und in die Ausgangsbuchdatei überträgt. Meine Überlegung wäre in dem Zusammenhang, über die Tabellenblattliste (Fenstermenü) oder mit Acitve .Workbok- Funktion auf das Rechungsblatt zuzugreifen. Bei dem darin enthaltenen Tabellenblatt ist die Frage, ob mit Sheets(1).Select neutral im Rahmen des Makros zu gegriffen werden kann. Die Fragetellung ist mir wichtig, weil die Rechnungsdateien, Beispiel: "Re 99 33.xls" aufgrund wechselnder Daten immer einen anderen Namen haben. Ich habe bei Saabauer (Helmut) und Jöke festgestellt, dass beide bei komplizierten Vorgängen sehr hilfreiche Lösungen zur Verfügung hatten. Selbstverständlich sind auch alle anderen Excelexperten ingeladen, Lösungsvorschläge zu machen. Bitte nicht böse sein, wenn ich Saarbauer und Jöke besonders hervor gehoben habe. Es soll sich niemand dadurch zurück gesetzt fühlen. Meine e-Mail-Adresse lautet: jo.agatha@alice-dsl.de Vielen Dank schon jetzt an alle, die mir bei der Lösung helfen. Gruß Joachim

Antwort 1 von Saarbauer

Hallo,

damit müsste es gehen

letzteZeile = Range("A65536").End(xlUp).Row

Hier wird die Spalte a genommen sonst entsprechend ändern und für di e nächste leere Zeile +1

Gruß

Helmut

Antwort 2 von Saarbauer

Hallo,

meine Hilfe ist zur Zeit nur für Frage a, s. vorhergehende Antwort.

Bei Frage b, she ich im Moment das Problem, wie erfährt das Programm die Dateinamen (z.B. Re 99 33.xls), stehen die Alle im gleichen Verzeichnis ?
Wie lautet der Name des Tabellenblattes auf dem Die Daten zu finden sind?

Kannst du ein Beispiel z.B. hier einstellen

http://www.netupload.de/

Gruß

Helmut

Antwort 3 von CaroS

Hallo Joachim,

ich frage noch einmal nach, vor allem hinsichtlich Problem b. Es gibt einen Rechnungsvordruck - eine Excel-Datei? Beim Ausfüllen wird automatisch eine eindeutige (fortlaufende) Rechnungsnummer generiert, daraus (und aus anderen Bestandteilen) wird ein neuer Dateiname erzeugt, unter dem die neu erstellte Rechnung (in dem dazu
gehörenden Verzeichnis) - wahrscheinlich per SaveAs-Befehl - abgespeichert wird. (Deshalb haben die Rechnungsdateien immer einen anderen Namen.)

Aus welcher Datei bzw. aus welchen Dateien sollen nun was für Werte (Zellen, Zeilen, Spalten) in was für eine Datei gespeichert werden? Immer in ein und dieselbe "Sammeldatei"? Wann soll das stattfinden und wodurch soll es ausgelöst werden? Z. B. Freitag nachmittag per Klick auf eine Schaltfläche, die sich in der "Sammeldatei" befindet für alle neu erstellten Rechnungsdateien der laufenden Woche? Oder für jede neue Rechnungsdatei sofort nach ihrer Erstellung? (- Das wäre etwas einfacher.)

Gruß,
CaroS

Antwort 4 von achim_13086

Hallo Helmut,

zu erst einmal vielen Dank für deine prompte Reaktion.

Hier ist der Link zu meiner Musterrechnung:
http://www.netupload.de/detail.php?img=9f65878d5d94e5a40a0f8c8d825d...

Jetzt zu deiner Frage:
Aus der Rechnung wird das Jahr, der Monat, die letzten drei Stellen der Rechnungsnummer und die Nummer rechts neben der Rechnungsnummer ausgelesen.

Diese Rechnung würde wie folgt gespeichert:
\Dateien\Betrieb\Rechnungen\Rech2006\August \

Das Makro, das die Rechnungsnummer vergibt ändert mit den obigen Angaben den Dateinamen und speichert die Datei automatisch in dem oben angegebenen Pfad.

Sobald sich der Monat ändert, entsteht zwangsläufig ein neues Monatsverzeichnis. Das gleiche gilt auch für das Jahr.

Das Tabellenblatt heißt Rechnung und behält unverändert diesen Namen.

Als zusätzlicher Hinweis:
Sobald ich eine neue Rechnung erstelle, steht sie im Fenstermenü auf der Position 1.
Da die Rechnungsdateien immer andere Namen haben schwebt mir vor, mittels der Position in der Fensterliste auf die Datei zuzugreifen. Damit wäre der Name der Datei unwichtig.

Das Makro möchte ich nach Fertigstellung und Fehlerprüfung in das bestehende Makro mit einem Call-Aufruf einbinden.

Das würde dann wie folgt ablaufen:
Es wird eine Rechnungsnummer vergeben, die Tabelle wird von Re1 auf den aktuellen Namen umbenannt und gespeichert. Das neue Makro liest die notwendigen Daten aus und schreibt sie in das Rechnungsausgangsbuch.

So wie es aussieht waren es lange Erklärungen von mir. Kern des ganzen ist, ich benötige eine neutrale Zugriffsroutine auf die jeweilige Rechnung, ohne dass ich deren Namen berücksichtigen muß.
Die Verwendung einer Input- bzw. Msgbox schließe ich aus, weil keine manuellen Eingaben getätigt werden sollen.

Ich hoffe, ich konnte den Ablauf verständlich darstellen. Ansonsten würde ich vorschlagen Du mailst mir deine Telefonnummer und ich rufe zurück. Habe eine Telefonflat, so dass mich das Gespräch nichts zusätzlich kosten würde.

Vielen Dank im voraus.

Gruß
Joachim

Antwort 5 von achim_13086

Hallo Caro,

vielen Dank für deine Antwort.

Das von mir erwähnte Rechnungsausgangsbuch ist eine Sammeldatei, in die Rechnungsdaten sofort geschrieben werden sollen.

Helmut hat diesbezüglich für den Teil b) meiner ursprünglichen Frage bereits nach gefragt.

In der Antwort 4 habe ich die einzelnen Schritte ergänzt. Ich glaube, dass für deine Frage die Antworten darin bereits enthalten sind.

Ein Link für die Musterrechnung ist in meiner Antwort 4 auch enthalten.

Als die Vba-Befehle in Excel noch in deutsch waren, habe ich darin einen Befehl zum Auslesen der Fensterliste gefunden. Seit Excel95 sind die Befehle leider in englisch und nun stehe ich wie ein *Z* vor den Vba-Codes und kann die entsprechenden Befehle nicht finden. Meine Englischkenntnisse reichen gerade dazu aus, die wichtigsten Meldungen der Klapperkiste zu interpretieren.

Ach so, ich benutze ausschließlich Office 97. Mehr ist im Prinzip auch nicht nötig.

Auch Dir schon jetzt herzlichen Dank im voraus.

Gruß
Joachim

Antwort 6 von achim_13086

Hallo helmut, hallo CaroS,

habe durch langes Probieren mein Problem im wesnetlichen gelöst..

Ich habe in meinem Programm eine Eingabemaske, aus der die notwendigen Daten für das Ausgangsbuch gelesen werden.

Der Hinweis von Saarbauer , Funktion letzte Zeile) hat mir den Schubs in die richtige Richtung gegeben.

Noch einmal danke für die Hinweise.

Gruß
Joachim

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: