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
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
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
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
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
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
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