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
> Hat jemand einen Tipp wie ich das hinbekomme?
Wenn es ein VBA-Makro ist, dann im Quellcode
den konstanten Text durch
Range("A1")
ersetzen.
Hallo Christian,
vielleicht helfen Dir folgende 2 Zeilen:
Dateiname = Worksheets("Tabelle1").Range("A1").Value
ThisWorkbook.SaveAs (Dateiname)
cu
Stefan
>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
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