Supportnet / Forum / Tabellenkalkulation
Mit Makro andere Excel Datei öffnen
Frage
Hallo zusammen
Bin sehr begeistert von dieser Seite!! Habe schon viele gute Tipps gesehen. Danke an alle die Excel können wie ihre eigene Hosentasche.
Nun meine Frage: Ich habe eine Datei mit verschiedenen berechnungen in Zellen (a3, b5). Nun möchte ich die Zahlen (ergebnisse) in a3, b5 in eine andere Exceldatei in eine Zeile speichern und wieder zurückkehren in die andere Datei mit den berechnungen. In der selben Datei eine Auflistung machen mit einem makro geht schon. Aber wie mit einer anderen Datei.
Vielen Dank schon mal fürs Antworten
Grüsse Maxli
Antwort 1 von martl
Hallo Maxli,
vielleicht hilft dir das schon mal weiter:
Sub Test()
Workbooks("Ziel.xls").Activate
Range("A1").Value = Workbooks("Start").Worksheets("Tabelle1").Range("A3").Value
Workbooks("Start.xls").Activate
End Sub
Der Wert aus A3 wird in die Datei "Ziel.xls" in Zelle A1 geschrieben. Vielleicht kannst Du mir noch n paar Infos geben, wie die Start und Zieldatei aufgebaut ist, bzw. sein sollte, und ob nur bestimmte Werte (aus welchen Zellen ?) kopiert werden sollen.
Viele Grüße
martl
vielleicht hilft dir das schon mal weiter:
Sub Test()
Workbooks("Ziel.xls").Activate
Range("A1").Value = Workbooks("Start").Worksheets("Tabelle1").Range("A3").Value
Workbooks("Start.xls").Activate
End Sub
Der Wert aus A3 wird in die Datei "Ziel.xls" in Zelle A1 geschrieben. Vielleicht kannst Du mir noch n paar Infos geben, wie die Start und Zieldatei aufgebaut ist, bzw. sein sollte, und ob nur bestimmte Werte (aus welchen Zellen ?) kopiert werden sollen.
Viele Grüße
martl
Antwort 2 von Primut
Hi Maxli,
von der Idee her ist martl´s Gedanke richtig,
bin mir auf die Schnelle unsicher, ob Activate
reicht oder Open verwendet werden müßte.
Dieser Ansatz läuft aber nur, wenn beide Arbeitsmappen im selben Ordner stehen.
Wenn die andere Arbeitsmappe mit Open geöffnet wird, müßte sie anschließend auch wieder geschlossen werden.
So weit auf die Schnelle, kann mich morgen ausführlich melden....
Gruß
Primut
von der Idee her ist martl´s Gedanke richtig,
bin mir auf die Schnelle unsicher, ob Activate
reicht oder Open verwendet werden müßte.
Dieser Ansatz läuft aber nur, wenn beide Arbeitsmappen im selben Ordner stehen.
Wenn die andere Arbeitsmappe mit Open geöffnet wird, müßte sie anschließend auch wieder geschlossen werden.
So weit auf die Schnelle, kann mich morgen ausführlich melden....
Gruß
Primut
Antwort 3 von maxli
Hallo zusammen
Danke für die Ideen. Versuche mit einem konkreten Beispiel mich besser Auszudrücken.
In der ersten Datei (normale datei.xls) "C:Dokumente und EinstellungenAdministratorDesktop est" wird gerechnet. Das Ergebnis ist in a3.
Nun möchte ich das Ergebnis in einer anderen Datei "W:DokumenteVORLAGEN" in der Zeile a2 speichern.
Das heisst also:
Das Ergebnis von Laufwerk C: kopieren
Datei auf Laufwerk W: öffnen
das Ergebnis in Zeile 2 schreiben
Datei auf Laufwerk W: speichern und wieder schliessen.
Wäre noch super wenn man das speichern auf Laufwerk W: nicht unbedingt sieht.
Hoffe es ist nicht zuviel verlangt.
Danke für die Antworten
Danke für die Ideen. Versuche mit einem konkreten Beispiel mich besser Auszudrücken.
In der ersten Datei (normale datei.xls) "C:Dokumente und EinstellungenAdministratorDesktop est" wird gerechnet. Das Ergebnis ist in a3.
Nun möchte ich das Ergebnis in einer anderen Datei "W:DokumenteVORLAGEN" in der Zeile a2 speichern.
Das heisst also:
Das Ergebnis von Laufwerk C: kopieren
Datei auf Laufwerk W: öffnen
das Ergebnis in Zeile 2 schreiben
Datei auf Laufwerk W: speichern und wieder schliessen.
Wäre noch super wenn man das speichern auf Laufwerk W: nicht unbedingt sieht.
Hoffe es ist nicht zuviel verlangt.
Danke für die Antworten
Antwort 4 von Primut
Hi Maxli,
von der Sache her kein Problem, anbei ein Beispiel - Makro:
Ich gehe davon aus, das du dich schon ein wenig mit VBA auskennst, oder?
Es versteht sich vonn selbst, daß die entsprechenden Pfade und Dateinamen genau angepasst werden müssen, sonst läuft nix. D.h. mit der integrierten Fehlerbehandlung wird nix ausgeführt, wenn der Pfad falsch ist o.ä. (d.h. es gibt auch keine Fehlermeldung)
Dieses Makro wäre dann in der "Normalen Datei" einzufügen, und die Cells(Zeilennummer,Spaltennummer) entsprechend anzupassen.
Gruß Primut
von der Sache her kein Problem, anbei ein Beispiel - Makro:
Sub DatenExportieren()
Const LW = "W:"
Const Pfad = "W:Dokumente Vorlagen"
Const Datei = "SpeicherDatei.xls"
ChDrive LW
ChDir Pfad
On Error Resume Next
Wert = Workbooks("Normale Datei.xls").Sheets(1).Cells(3, 1).Value
Workbooks.Open Datei
Workbooks(Datei).Sheets(1).Cells(1, 1).Value = Wert
Application.DisplayAlerts = False
Workbooks(Datei).Close
On Error GoTo 0
End Sub
Ich gehe davon aus, das du dich schon ein wenig mit VBA auskennst, oder?
Es versteht sich vonn selbst, daß die entsprechenden Pfade und Dateinamen genau angepasst werden müssen, sonst läuft nix. D.h. mit der integrierten Fehlerbehandlung wird nix ausgeführt, wenn der Pfad falsch ist o.ä. (d.h. es gibt auch keine Fehlermeldung)
Dieses Makro wäre dann in der "Normalen Datei" einzufügen, und die Cells(Zeilennummer,Spaltennummer) entsprechend anzupassen.
Gruß Primut
Antwort 5 von Primut
Hey,
sorry, versteht sich natürlich von selbst, daß jeweils
nach "W:" ein Backslash kommen muß!!
Keine Ahnung, was hier übermittlungstechnisch schiefgelaufen ist.
@Admin : Bin ich zu blöd, daß mein Backslash im Code nicht angezeigt wird, oder ist das ein Systemfehler ??? In der Vorschau war er noch sichtbar! (Ich habs einfach rüberkopiert) Welche Tricks wären dafür hilfreich?
Gruß Primut
sorry, versteht sich natürlich von selbst, daß jeweils
nach "W:" ein Backslash kommen muß!!
Keine Ahnung, was hier übermittlungstechnisch schiefgelaufen ist.
@Admin : Bin ich zu blöd, daß mein Backslash im Code nicht angezeigt wird, oder ist das ein Systemfehler ??? In der Vorschau war er noch sichtbar! (Ich habs einfach rüberkopiert) Welche Tricks wären dafür hilfreich?
Gruß Primut
Antwort 6 von maxli
Hallo da bin ich wieder
Habe es nun angepasst und ausprobiert? Folgendes passiert : Wenn ich das Makro ausführe, gibt es mir eine Kopie von: VBAProject(Probe.XLS)
Die Kopie heisst: VBAProject(Sicherungstest.XLS)
Was muss ich nun tun, damit es mir die daten von Probe.xls (a3) in die datei sicherungstest schreibt. Oder welchen Fehler mache ich noch?
Hier das angepasste makro für mich
Sub DatenExportieren()
Const LW = "G:"
Const Pfad = "G:"
Const Datei = "sicherungstest.xls"
ChDrive LW
ChDir Pfad
On Error Resume Next
Wert = Workbooks("Probe").Sheets(1).Cells(3, 1).Value
Workbooks.Open Datei
Workbooks(Datei).Sheets(1).Cells(1, 1).Value = Wert
Application.DisplayAlerts = False
Workbooks(Datei).Close
On Error GoTo 0
End Sub
Habe es nun angepasst und ausprobiert? Folgendes passiert : Wenn ich das Makro ausführe, gibt es mir eine Kopie von: VBAProject(Probe.XLS)
Die Kopie heisst: VBAProject(Sicherungstest.XLS)
Was muss ich nun tun, damit es mir die daten von Probe.xls (a3) in die datei sicherungstest schreibt. Oder welchen Fehler mache ich noch?
Hier das angepasste makro für mich
Sub DatenExportieren()
Const LW = "G:"
Const Pfad = "G:"
Const Datei = "sicherungstest.xls"
ChDrive LW
ChDir Pfad
On Error Resume Next
Wert = Workbooks("Probe").Sheets(1).Cells(3, 1).Value
Workbooks.Open Datei
Workbooks(Datei).Sheets(1).Cells(1, 1).Value = Wert
Application.DisplayAlerts = False
Workbooks(Datei).Close
On Error GoTo 0
End Sub
Antwort 7 von Peejay Joy
Hi maxli!
Ich muss mich demnächst mit etwa demselben Problem wie du rumschlagen und bin daher auf deinen Beitrag gestoßen.
Jetzt hab´ ich ein wenig rumprobiert und bei mir funktioniert es:).
Ich versuch jetzt mal deinen Code an meinen anzupassen:
Sub DatenExportieren()
Const LW = "G:"
Const Pfad = "G:"
Const Datei = "G:sicherungstest.xls"
ChDrive LW
ChDir Pfad
On Error Resume Next
Wert = Workbooks("Probe.xls").Worksheets("<Name des Sheets>").Range("A3").Value
Workbooks.Open Datei
Workbooks("sicherungstest.xls").Worksheets("<Name des Sheets>").Range("A1").Value = Wert
´Application.DisplayAlerts = False
Workbooks("sicherungstest.xls").Save
Workbooks("sicherungstest.xls").Close
On Error GoTo 0
End Sub
Man beachte die Save Funktion - sonst kannst du dir das kopieren vermutlich auch sparen;). Außerdem arbeite - zumindest - ich lieber mit Worksheets (statt Sheets) und Range (statt Cells), weil man dann als Parameter direkt mit Namen arbeiten kann und nicht mit irgendwelchen Zahlen, wo man z.B. bei Cells schon nicht mehr weiß was Zeile und was Spalte ist. Ein Fremder der vielleicht den Code mal übernehmen muss tut sich dann bestimmt auch leichter:).
Übrigens...falls sich in der Mappe, die du schließt noch nicht gespeicherte Daten befinden, erscheint automatisch eine Sicherheitsabfrage. Mit
Application.DisplayAlerts = False
kannst du diese Abfrage unterbinden. Ich finde das ja nicht sehr sinnvoll und habe es oben daher auskommentiert.
Ich hoffe, ich konnte dir helfen!
Viele Grüße,
Peejay
Ich muss mich demnächst mit etwa demselben Problem wie du rumschlagen und bin daher auf deinen Beitrag gestoßen.
Jetzt hab´ ich ein wenig rumprobiert und bei mir funktioniert es:).
Ich versuch jetzt mal deinen Code an meinen anzupassen:
Sub DatenExportieren()
Const LW = "G:"
Const Pfad = "G:"
Const Datei = "G:sicherungstest.xls"
ChDrive LW
ChDir Pfad
On Error Resume Next
Wert = Workbooks("Probe.xls").Worksheets("<Name des Sheets>").Range("A3").Value
Workbooks.Open Datei
Workbooks("sicherungstest.xls").Worksheets("<Name des Sheets>").Range("A1").Value = Wert
´Application.DisplayAlerts = False
Workbooks("sicherungstest.xls").Save
Workbooks("sicherungstest.xls").Close
On Error GoTo 0
End Sub
Man beachte die Save Funktion - sonst kannst du dir das kopieren vermutlich auch sparen;). Außerdem arbeite - zumindest - ich lieber mit Worksheets (statt Sheets) und Range (statt Cells), weil man dann als Parameter direkt mit Namen arbeiten kann und nicht mit irgendwelchen Zahlen, wo man z.B. bei Cells schon nicht mehr weiß was Zeile und was Spalte ist. Ein Fremder der vielleicht den Code mal übernehmen muss tut sich dann bestimmt auch leichter:).
Übrigens...falls sich in der Mappe, die du schließt noch nicht gespeicherte Daten befinden, erscheint automatisch eine Sicherheitsabfrage. Mit
Application.DisplayAlerts = False
kannst du diese Abfrage unterbinden. Ich finde das ja nicht sehr sinnvoll und habe es oben daher auskommentiert.
Ich hoffe, ich konnte dir helfen!
Viele Grüße,
Peejay
Antwort 8 von maxli
Hallo zusammen
Endlich hats auch bei mir klick gemacht.
Vielen Dank für eure Hilfe
Güsse Maxli
Endlich hats auch bei mir klick gemacht.
Vielen Dank für eure Hilfe
Güsse Maxli

