Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Makro: Datei speichern unter Namen in Zelle A1

2,300 views
Skip to first unread message

Christian Gröber

unread,
Nov 5, 2000, 3:00:00 AM11/5/00
to
Hallo NG!

Ich habe mir ein Makro geschrieben, daß eine Excel-Tabelle öffnet,
konvertiert und wieder speichert. Da sich die Dateinamen der Quell-
und Ziel-Datei immer ändern, habe ich ins Makro eine Funktion
eingebaut, die dies berücksichtigen sollte.
Und zwar will ich, daß die Datei unter dem Namen gespeichert wird,
der in der Zelle A1 steht (ganzes Verzeichnis, z.B. "C:/Eigene
Dateien/test.xls")

Das funktioniert soweit eigentlich ganz gut. Ich kopiere beim Aufzeichnen
des Makros den Zellinhalt von A1, gehe auf "Speichern unter" und füge
dort mit Strg + V den Namen aus der Zwischenablage ein.

Das Problem ist jetzt, daß die Datei nun immer unter diesem Namen
gespeichert wird der beim Makro-Aufzeichnen da stand. Auch wenn ich
den Zellinhalt von A1 ändere.
Das ist nun natürlich nicht Sinn der Sache. Ich habe es schon mit relativer
Aufzeichnung versucht, aber auch das ändert nichts.

Hat jemand einen Tipp wie ich das hinbekomme?

Christian

Anette Stegmann

unread,
Nov 5, 2000, 3:00:00 AM11/5/00
to
"Christian Gröber" <sunn...@gmx.net> schrieb im
Newsbeitrag news:8u3et1$jps$00$1...@news.t-online.com...

> Hat jemand einen Tipp wie ich das hinbekomme?

Wenn es ein VBA-Makro ist, dann im Quellcode
den konstanten Text durch

Range("A1")

ersetzen.


Stefan Stoehr

unread,
Nov 5, 2000, 3:00:00 AM11/5/00
to
"Christian Gröber" <sunn...@gmx.net> schrieb im Newsbeitrag
news:8u3et1$jps$00$1...@news.t-online.com...
> Hat jemand einen Tipp wie ich das hinbekomme?
>

Hallo Christian,
vielleicht helfen Dir folgende 2 Zeilen:

Dateiname = Worksheets("Tabelle1").Range("A1").Value
ThisWorkbook.SaveAs (Dateiname)

cu
Stefan


Manfred Grieble

unread,
Nov 5, 2000, 3:00:00 AM11/5/00
to
Christian Gröber schrieb...

>Das Problem ist jetzt, daß die Datei nun immer unter diesem Namen
>gespeichert wird der beim Makro-Aufzeichnen da stand. Auch wenn ich
>den Zellinhalt von A1 ändere.

Hallo Christian, z.B.

ActiveWorkbook.SaveAs. Filename:= _
"c:\msoffice\excel\daten\dat" & fragment & ".xls",...

das zwischen den & ... & ist eine Variable der du vorher eine Zei-
chenkette zuordnen kannst

z.B. fragment = ActiveCell.Value

Auf diese Art kannst du deine Syntax bel. zusammenstellen.
Wenn z.B in der aktiven Zelle als Text "en22" stehen würde dann
wird unter "daten22.xls" gespeichert ("dat" & "en22" & ".xls")

Noch eleganter geht's mit GetSaveAs..., z.B.

bezei = Application.GetSaveAsFilename("*.xls", "(*.xls),*.xls", , "++")
ActiveWorkbook.SaveAs Filename:="" & bezei, FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

++ = bel. Text, erscheint dann als Fenstertext

Manfred

Christian Gröber

unread,
Nov 8, 2000, 3:00:00 AM11/8/00
to
> Wenn es ein VBA-Makro ist, dann im Quellcode
> den konstanten Text durch
>
> Range("A1")
>
> ersetzen.

Vielen Dank für Eure Tipps (auch an Stefan u. Manfred).
Hat wunderbar funktioniert!!!

Jetzt hat sich aber noch ein anderes Problem aufgetan,
daß mit meiner ursprünglichen Frage etwas zu tun hat.

Also, ich habe eine Tabelle bei der in Zelle A1 die zu öffnende
Datei steht (Quelldatei). In Zelle A2 steht der Name der Zieldatei.

Das Makro führt folgendes aus (verkürzt dargestellt):

1. Die Quelldatei wird geöffnet.
2. Es werden Veränderungen daran vorgenommen.
3. Rückkehr zur Datei die das Makro, den Namen der
Zieldatei und ein paar andere Sachen enthält, die in die
Zieldatei eingebaut werden müssen (nennen wir sie
Makro-Datei)
4. Kopieren der Informationen aus der Makro-Datei
zwecks einfügen in die Zieldatei
5. Rückkehr zur Zieldatei
6. Einfügen der Daten
7. Speichern unter Ziel-Dateiname

Dies funktioniert alles ganz gut, nur Punkt 5 macht Schwierigkeiten:

Bei der Aufnahme des Makros bin ich über den Menupunkt
"Fenster" zur anderen Datei zurückgekehrt, was auch kein Problem
war. Ändere ich nun den Namen der Quelldatei, so wird diese nicht
mehr gefunden (Laufzeitfehler). Dies liegt daran, daß dieser Dateiname
bei der ursprünglichen Aufnahme ebenfalls 'absolut' gespeichert wurde,
dies erkenne ich aus dem VBA-Modul.

Ist es nun möglich zur anderen (im Speicher befindlichen) Datei zurück-
zukehren, auch wenn der Name inzwischen anders ist?

Ich habe mal so etwas probiert, doch leider scheint da was nicht am
Syntax zu stimmen:

Dateiname = Worksheets("Tabelle1").Range("A1").Value

Windows (Dateiname).Activate

Christian

0 new messages