Discussion:
[Win Exc97] mit Makro automatisch Dateinamen speichern
(zu alt für eine Antwort)
E.Wöger
2014-09-02 21:08:51 UTC
Permalink
Hallo NG,

nach langer Krankenhauszeit hab ich mich mal wieder für einen guten Freund an eine kleine Excel-Anwendung gewagt und brauche wieder mal Euere Hilfe.
Für eine einfache Rechnungs-Verwaltung besteht eine Tabelle : "001_RechnNummern.XLS" , die immer zuerst aktiviert wird, und eines der
zwei Rechnungs-Leerformulare :" 002_Formular HS.XLS" und "003_Formular MTh", die sich aber nur im Absender unterscheiden, die gesamte Listenstruktur ist gleich.

In "001_RechnNummern" stehen in Spalte A in 50 Zeilen - beginnend bei 5 - Rechnungdnummern von 001 bis 055.

Die Spalten A bis K enthalten für jeden Kunden :
z.B: in Zeile 5 :
Sp A Rechnungs Nr 001 (schon vorgegeben)
Sp B Anrede Herr
Sp C Name Vorname Kohl Heinz
Sp D Straße Nr Gartenweg 6
Sp E PLZ Ort 90449 Nürnberg

Sp F Rechnungs Betrag
Sp G Rechnungs Datum
Sp H Fälligkeit
SpI ↓ bezahlt
SpJ Mahnung
SpK Rechnung öffnen

Bei einem neuen Kd. werden in die nächste freie Zeile die Spalten B bis E ausgefüllt und von SpA bis SpE markiert. Nun kopiert ein Makro (über eine Schaltfläche) diese Daten in das daneben stehende Formular, z.B. "003_Formular MTh", in die Zeile A1. Dort wird die RechngNr Spalte A in das Feld F16 kopiert , dann dieSpaltenwerte von B bis E in das Feld A10, *aber transponiert * kopiert und ergeben da untereinander stehend die Postadresse.
Bis zu diesem Punkt besteht ein gut funktionierendes Makro.
Jetzt enthalten die Zellen F16 und G16 die Rechnungsnummer, z.B: 001-2014 und mit diesem Dateinamen soll die Datei mit "Speichern unter" abgespeichert werden.
Hier beginnt mein Unwissen : wie erhält dieser Befehl automatisch die Anweisung des Dateinamens : z.B: 001_2014.xls aus diesen Feldern?
Zusätzlich soll dieser Dateinamen als Hyperlink in das Feld K "Rechnung öffnen", der Datei "RechnNummern.xls" eingefügt werden.
So kann die betreffend Rechnung sofort zur weiteren manuellen Eingabe von Daten geöffnet werden.
Damit ich weiter arbeiten kann wäre ich dankbar, wenn Euer Vorschlag zunächst für Excekl 97 käme. Mein Freund hat aber Excel 2007 und es wäre natürlich toll, wenn das auch dort funktionieren würde, nachdem Exc2007 auch im Format Exc 97 abspeichern kann.

Mit freundlichen Grüßen
Erich Wöger
E.Wöger
2014-09-02 23:42:48 UTC
Permalink
Hallo
ich hab noch vergessen :
wie erkennt das Makro, welche der beiden möglichen 002_xxxx oder 003_Formulare gerade auf dem Bildschirm aufgerufen ist?
z.Z. steht an dieser Stelle der vom MakroRecorder der zu diesem Zeitpunkt aufgezeichnete Formular-Namen. Es sollte aber der Name des geladenen Formulars vom Makro erkannt und übernommen werden.
Sorry
E.Wöger

____

"E.Wöger" <***@nefkom.net> schrieb im Newsbeitrag news:lu5bq8$u4a$***@news.m-online.net...
Hallo NG,

nach langer Krankenhauszeit hab ich mich mal wieder für einen guten Freund an eine kleine Excel-Anwendung gewagt und brauche wieder mal Euere Hilfe.
Für eine einfache Rechnungs-Verwaltung besteht eine Tabelle : "001_RechnNummern.XLS" , die immer zuerst aktiviert wird, und eines der
zwei Rechnungs-Leerformulare :" 002_Formular HS.XLS" und "003_Formular MTh", die sich aber nur im Absender unterscheiden, die gesamte Listenstruktur ist gleich.

In "001_RechnNummern" stehen in Spalte A in 50 Zeilen - beginnend bei 5 - Rechnungdnummern von 001 bis 055.

Die Spalten A bis K enthalten für jeden Kunden :
z.B: in Zeile 5 :
Sp A Rechnungs Nr 001 (schon vorgegeben)
Sp B Anrede Herr
Sp C Name Vorname Kohl Heinz
Sp D Straße Nr Gartenweg 6
Sp E PLZ Ort 90449 Nürnberg

Sp F Rechnungs Betrag
Sp G Rechnungs Datum
Sp H Fälligkeit
SpI ↓ bezahlt
SpJ Mahnung
SpK Rechnung öffnen

Bei einem neuen Kd. werden in die nächste freie Zeile die Spalten B bis E ausgefüllt und von SpA bis SpE markiert. Nun kopiert ein Makro (über eine Schaltfläche) diese Daten in das daneben stehende Formular, z.B. "003_Formular MTh", in die Zeile A1. Dort wird die RechngNr Spalte A in das Feld F16 kopiert , dann dieSpaltenwerte von B bis E in das Feld A10, *aber transponiert * kopiert und ergeben da untereinander stehend die Postadresse.
Bis zu diesem Punkt besteht ein gut funktionierendes Makro.
Jetzt enthalten die Zellen F16 und G16 die Rechnungsnummer, z.B: 001-2014 und mit diesem Dateinamen soll die Datei mit "Speichern unter" abgespeichert werden.
Hier beginnt mein Unwissen : wie erhält dieser Befehl automatisch die Anweisung des Dateinamens : z.B: 001_2014.xls aus diesen Feldern?
Zusätzlich soll dieser Dateinamen als Hyperlink in das Feld K "Rechnung öffnen", der Datei "RechnNummern.xls" eingefügt werden.
So kann die betreffend Rechnung sofort zur weiteren manuellen Eingabe von Daten geöffnet werden.
Damit ich weiter arbeiten kann wäre ich dankbar, wenn Euer Vorschlag zunächst für Excekl 97 käme. Mein Freund hat aber Excel 2007 und es wäre natürlich toll, wenn das auch dort funktionieren würde, nachdem Exc2007 auch im Format Exc 97 abspeichern kann.

Mit freundlichen Grüßen
Erich Wöger
Claus Busch
2014-09-03 06:34:37 UTC
Permalink
Hallo,
Post by E.Wöger
wie erkennt das Makro, welche der beiden möglichen 002_xxxx oder 003_Formulare gerade auf dem Bildschirm aufgerufen ist?
z.Z. steht an dieser Stelle der vom MakroRecorder der zu diesem Zeitpunkt aufgezeichnete Formular-Namen. Es sollte aber der Name des geladenen Formulars vom Makro erkannt und übernommen werden.
wie erkennt das Makro in welches Formular die Daten zu kopieren sind?
Daran kannst du auch den Speicherpfad festmachen. Wenn dir das nicht
hilft, dann poste hier mal bitte deinen Code zum Kopieren der Daten.


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
E.Wöger
2014-09-03 19:43:45 UTC
Permalink
Hallo Claus
Post by Claus Busch
wie erkennt das Makro in welches Formular die Daten zu kopieren sind?
Daran kannst du auch den Speicherpfad festmachen. Wenn dir das nicht
hilft, dann poste hier mal bitte deinen Code zum Kopieren der Daten.
Danke für die schnelle Antwort (wie immer..).
Ich hab mein Konzept jetzt umgestellt und gehe mit meinem Makro von der Ziel-Datei( :" 002_Formular HS.XLS" und "003_Formular MTh", )aus und hole die Daten von der immer aktiven Datei ( "001_RechnNummern.XLS").
Das funktioniert, bis auf den Abschnit "Speichern unter " da bring ich den Namen der Variablen ReNr nicht an die Stelle des definierten Namens z.B 022-2014.xls

Hier mein aufgezeichneter Text :

--
Option Explicit
Sub DatenHolen()
'
' DatenHolen Makro
' Makro am 03.09.2014 von a aufgezeichnet
'

'
Dim Re As String
Dim Jhr As String
Dim ReNr As String

Windows("001_RechnNummern.xls").Activate ' hier sind die betreffenden Zellen vorher schon markiert
Selection.Copy

Windows("003_Formular Massagetherapie.xls").Activate
Range("A1").Select
ActiveSheet.Paste

Range("A1").Select
Selection.Copy

Range("F16").Select
ActiveSheet.Paste

Range("B1:E1").Select
Application.CutCopyMode = False
Selection.Copy
Range("A10").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True

Range("A20").Select
Application.CutCopyMode = False

Re = Range("F16").Value

Jhr = Range("G16").Value

ReNr = Re & Jhr

ActiveWorkbook.SaveAs FileName:= _
"D:\Heim\Exc97\Eigene\Süllner\Rechnungen\022-2014.xls", FileFormat:= _
xlExcel9795, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
End Sub
--

Die Jahreszahl "-2014" steht so immer in Feld G16 und wird im neuen Jahr händisch geändert.

Kann ich jetzt dieses persönliche Makro auch für die zweite Tabelle verwenden und Alles unter entsprechenden Anpassungen der Pfade auch unter Excel 2007 einsetzen ?

MfG
E.Wöger
Claus Busch
2014-09-04 07:51:25 UTC
Permalink
Hallo,
Post by E.Wöger
ActiveWorkbook.SaveAs FileName:= _
"D:\Heim\Exc97\Eigene\Süllner\Rechnungen\022-2014.xls", FileFormat:= _
xlExcel9795, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
Probiers mal mit

ActiveWorkbook.SaveAs FileName:= _
"D:\Heim\Exc97\Eigene\Süllner\Rechnungen\" & Re _
& "_" & Jhr & ".xls", FileFormat:= _
xlExcel9795, Password:="", WriteResPassword:="",
ReadOnlyRecommended:= _
False, CreateBackup:=False


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
E.Wöger
2014-09-04 15:00:51 UTC
Permalink
Hallo Claus,
Post by Claus Busch
Hallo,
Post by E.Wöger
ActiveWorkbook.SaveAs FileName:= _
"D:\Heim\Exc97\Eigene\Süllner\Rechnungen\022-2014.xls", FileFormat:= _
xlExcel9795, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
Probiers mal mit
ActiveWorkbook.SaveAs FileName:= _
"D:\Heim\Exc97\Eigene\Süllner\Rechnungen\" & Re _
& "_" & Jhr & ".xls", FileFormat:= _
xlExcel9795, Password:="", WriteResPassword:="",
ReadOnlyRecommended:= _
False, CreateBackup:=False
Die übernahme der drei Variablen in den Rechnunsnamen klappt einwandfrei, aber... durch eine Überwachung dieser Variablen hab ich erst jetzt festgestellt, daß die Variable Re nicht die im Formular stehende drei-stellige Zahl, also mit vorlaufender Null bis 99, übernimmt, sondern nur zweistellig.
Daher ist diese Zahl auch in der Variablen ReNr ohne vorlaufende Null.
Ich vermute, daß diese schon vorab mit Dim nicht als String, sondern als eine der numerischen Variablen deklariert werden müßte, aber wie?
Damit kenn ich mich nicht so aus, Kannst Du mir mit der Deklarierung der drei Variablen helfen?

Dann hab ich auch noch ein weiteres Problem :

Diese Rechnugsnummer ReNr soll am Ende wieder in das Ausgangformular "RechnNummer" in der gleichen Zeile in Spalte K als Hyperlink eingefügt werden. Das ist die gleiche Zeile, aus der vorher die Spalten A bis E kopiert wurden und die beim Rücksprung zu dieser immer noch markiert sind.
Händisch funktioniert das einwanfrei mit "Einfügen > Hyperlink >Durchsuchen > markieren des betrffenden Dateinamens > zweimal OK .
Für den Anwender ist das aber viel zu kompliziert und sollte daher mit diesem Makro erfolgen. Geht das ?

Vielen Dank für die erste Lösung.

MfG
E.Wöger
Claus Busch
2014-09-04 15:06:22 UTC
Permalink
Hallo,
Post by E.Wöger
Die übernahme der drei Variablen in den Rechnunsnamen klappt einwandfrei, aber... durch eine Überwachung dieser Variablen hab ich erst jetzt festgestellt, daß die Variable Re nicht die im Formular stehende drei-stellige Zahl, also mit vorlaufender Null bis 99, übernimmt, sondern nur zweistellig.
Daher ist diese Zahl auch in der Variablen ReNr ohne vorlaufende Null.
Ich vermute, daß diese schon vorab mit Dim nicht als String, sondern als eine der numerischen Variablen deklariert werden müßte, aber wie?
Damit kenn ich mich nicht so aus, Kannst Du mir mit der Deklarierung der drei Variablen helfen?
dann schreibe die Variable Re so:
Re = Format(Range("F16").Value,"000")
Post by E.Wöger
Diese Rechnugsnummer ReNr soll am Ende wieder in das Ausgangformular "RechnNummer" in der gleichen Zeile in Spalte K als Hyperlink eingefügt werden. Das ist die gleiche Zeile, aus der vorher die Spalten A bis E kopiert wurden und die beim Rücksprung zu dieser immer noch markiert sind.
Händisch funktioniert das einwanfrei mit "Einfügen > Hyperlink >Durchsuchen > markieren des betrffenden Dateinamens > zweimal OK .
Für den Anwender ist das aber viel zu kompliziert und sollte daher mit diesem Makro erfolgen. Geht das ?
ohne die Mappen zu kennen und genauer zu wissen, was wie und wo erfolgen
soll, ist es schwer zu helfen. Und nur mit Code-Bruchstücken alleine ist
es da auch nicht getan. Kannst du die Mappen mit einer Beschreibung
irgendwo hochladen und den Link hier posten?


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
E.Wöger
2014-09-05 00:48:35 UTC
Permalink
Hallo Claus,
Post by Claus Busch
Hallo,
Post by E.Wöger
Post by E.Wöger
Diese Rechnugsnummer ReNr soll am Ende wieder in das Ausgangformular "RechnNummer" in der gleichen Zeile in Spalte K als Hyperlink eingefügt werden. Das ist die gleiche Zeile, aus der vorher die Spalten A bis E kopiert wurden und die beim Rücksprung zu dieser immer noch markiert sind.
Händisch funktioniert das einwanfrei mit "Einfügen > Hyperlink >Durchsuchen > markieren des betrffenden Dateinamens > zweimal OK .
Für den Anwender ist das aber viel zu kompliziert und sollte daher mit diesem Makro erfolgen. Geht das ?
ohne die Mappen zu kennen und genauer zu wissen, was wie und wo erfolgen
soll, ist es schwer zu helfen. Und nur mit Code-Bruchstücken alleine ist
es da auch nicht getan. Kannst du die Mappen mit einer Beschreibung
irgendwo hochladen und den Link hier posten?
Ich hab leider keine Adresse, zu der ich die betreffenden Dateien hochladen Kann.
Kannst Du mir eine nennen?
Wäre es ev. über Teamviewer möglich, da könnte ich Dir das mal vorführen oder ich könnte damit die drei betreffenden Dateien über Datei-Transver in einen von Dir vorbereiteten Ordner übertragen?

MfG
E.Wöger
Claus Busch
2014-09-05 05:37:11 UTC
Permalink
Hallo,
Post by E.Wöger
Ich hab leider keine Adresse, zu der ich die betreffenden Dateien hochladen Kann.
Kannst Du mir eine nennen?
fast jeder Provider hat doch heute seine eigene Cloud. Oder schau nach
einem kostenlosen Filesharing-Anbieter wie z.B. DropBox


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Ulrich Möller
2014-09-05 10:51:55 UTC
Permalink
Post by E.Wöger
Hallo Claus,
Post by Claus Busch
Hallo,
Post by E.Wöger
Post by E.Wöger
Diese Rechnugsnummer ReNr soll am Ende wieder in das Ausgangformular "RechnNummer" in der gleichen Zeile in Spalte K als Hyperlink eingefügt werden. Das ist die gleiche Zeile, aus der vorher die Spalten A bis E kopiert wurden und die beim Rücksprung zu dieser immer noch markiert sind.
Händisch funktioniert das einwanfrei mit "Einfügen > Hyperlink >Durchsuchen > markieren des betrffenden Dateinamens > zweimal OK .
Für den Anwender ist das aber viel zu kompliziert und sollte daher mit diesem Makro erfolgen. Geht das ?
ohne die Mappen zu kennen und genauer zu wissen, was wie und wo erfolgen
soll, ist es schwer zu helfen. Und nur mit Code-Bruchstücken alleine ist
es da auch nicht getan. Kannst du die Mappen mit einer Beschreibung
irgendwo hochladen und den Link hier posten?
Ich hab leider keine Adresse, zu der ich die betreffenden Dateien hochladen Kann.
Kannst Du mir eine nennen?
Wäre es ev. über Teamviewer möglich, da könnte ich Dir das mal vorführen oder ich könnte damit die drei betreffenden Dateien über Datei-Transver in einen von Dir vorbereiteten Ordner übertragen?
MfG
E.Wöger
Hallo Erich,

ich benutze für so etwas einen kostenlosen Account bei
"https://login.live.com" <https://login.live.com> (früher skydrive) von
Microsoft und gebe dann den Ordner für andere frei und generiere einen
Link, der dann in den Newsgroup gepostet werden kann. Darüber kann ich
dann die notwendigen Informationen bereitstellten. Es gibt natürlich
auch noch andere Anbieter.

Gruß
Ulrich
E.Wöger
2014-09-05 13:12:18 UTC
Permalink
Hallo Claus & Ulrich
Post by Ulrich Möller
Post by E.Wöger
Hallo Claus,
Post by Claus Busch
Hallo,
Post by E.Wöger
Post by E.Wöger
Diese Rechnugsnummer ReNr soll am Ende wieder in das Ausgangformular "RechnNummer" in der gleichen Zeile in Spalte K als Hyperlink eingefügt werden. Das ist die gleiche Zeile, aus der vorher die Spalten A bis E kopiert wurden und die beim Rücksprung zu dieser immer noch markiert sind.
Händisch funktioniert das einwanfrei mit "Einfügen > Hyperlink >Durchsuchen > markieren des betrffenden Dateinamens > zweimal OK .
Für den Anwender ist das aber viel zu kompliziert und sollte daher mit diesem Makro erfolgen. Geht das ?
ohne die Mappen zu kennen und genauer zu wissen, was wie und wo erfolgen
soll, ist es schwer zu helfen. Und nur mit Code-Bruchstücken alleine ist
es da auch nicht getan. Kannst du die Mappen mit einer Beschreibung
irgendwo hochladen und den Link hier posten?
ich benutze für so etwas einen kostenlosen Account bei
"https://login.live.com" <https://login.live.com> (früher skydrive) von
Microsoft und gebe dann den Ordner für andere frei und generiere einen
Link, der dann in den Newsgroup gepostet werden kann. Darüber kann ich
dann die notwendigen Informationen bereitstellten. Es gibt natürlich
auch noch andere Anbieter.
Ich hab das Problem jetzt anders gelöst.
Habe in meinem Makro noch für den Kd.Namen die Variable "Na" in die "Speicher unter "- Anweisung eingefügt, sodaß hinter dem Dateinamen noch der Kd.-Namen angezeigt und gespeichert wird z.B.:" 005-2014-Erich Wöger ".
So kann man im Ordner der gespeicherten Dateien erkennen, welcher Kd. für die Datei-Nummer steht.
Das Problem ist damit gelöst und ich beende diesen Thread.

Wenn beim Integrieren dieses Programms in Excel2007 Schwierigkeiten auftreten, komme ich gerne wieder auf Euere Hilfe in einem neuen Thread zurück.
Nochmals vielen Dank für die bisherige Beratung.

Mit freundlichen Grüßen
Erich Wöger

Lesen Sie weiter auf narkive:
Loading...