Registriert seit: 30.01.2016
Version(en): 2010
Hallo,
ich habe beim Stöbern einen für meine Zwecke sehr schönen, sehr kurzen Code gefunden, der Daten aus meiner aktuellen Datei in die Tabelle einer anderen Datei (Beispiel.xlsx) schreibt.
[/url]
[url=http://www.clever-excel-forum.de/thread-8605.html]
http://www.clever-excel-forum.de/thread-8605.html
Code:
Sub M_snb()
With GetObject("C:\Test\Beispiel.xlsx")
ThisWorkbook.Sheets(1).Range("A1:A10") = .Sheets(1).Range("A1:A10").Value
.Close 0
End With
End Sub
Basierend auf diesem Code möchte ich den umgekehrten Fall haben. Daten aus der Datei Beispiel.xlsx sollen in meine aktuelle Datei geschrieben werden.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
ich würd' einfach mal die teile links und rechts des Gleichheitszeichens miteinander austauschen.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• DerAnfänger
Registriert seit: 30.01.2016
Version(en): 2010
@attila
So weit war ich auch schon, funktionierte bei mir aber nicht.
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
(22.02.2017, 14:35)DerAnfänger schrieb: Basierend auf diesem Code möchte ich den umgekehrten Fall haben. Daten aus der Datei Beispiel.xlsx sollen in meine aktuelle Datei geschrieben werden.
Hm, der Code kopiert doch aus der Datei Beispiel.xlsx in die Datei, in der der Code steht.
Gruß
Michael
Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
22.02.2017, 15:13
(Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2017, 15:13 von lupo1.)
Hast Du beim Tauschen das .Value auch an der rechten Seite stehen lassen?
.Sheets(1).Range("A1:A10") = ThisWorkbook.Sheets(1).Range("A1:A10").Value
EDIT: Steuerfuzzis Einwand ist nicht von der Hand zu weisen ...
Folgende(r) 1 Nutzer sagt Danke an lupo1 für diesen Beitrag:1 Nutzer sagt Danke an lupo1 für diesen Beitrag 28
• DerAnfänger
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
am Ende muss bei Close noch gespeichert werden:
Code:
.Close savechanges:=True
Aber bei mir passiert da etwas eigenartiges. Wenn ich die Datei öffne ist sie ohne Tabellenblätter. Nicht da!
Gruß Atilla
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
22.02.2017, 15:57
(Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2017, 15:58 von Der Steuerfuzzi.)
(22.02.2017, 15:20)atilla schrieb: Aber bei mir passiert da etwas eigenartiges. Wenn ich die Datei öffne ist sie ohne Tabellenblätter. Nicht da!
Vermutlich ist sie noch geöffnet (von vorherigen Versuchen). Schließe Dein komplettes Excel (evtl. im Task Manager nachsehen, ob noch eine Instanz läuft) und probiere es nochmal.
Gruß
Michael
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
habe ich alles gemacht, bis auf einen Neustart des Rechners.
Die Dateien sind in der gleichen Instanz erstellt gespeichert und geschlossen worden.
Wäre blöd, wenn ich heute wieder Überstunden machen und eine Nachtschicht einlegen müsste. :19:
Code:
Sub M_snb()
With GetObject("C:\Users\User\Desktop\MappeZU.xlsm")
.Sheets(1).Range("A1:A10").Value = ThisWorkbook.Sheets(1).Range("A1:A10").Value
.Close savechanges:=True
End With
End Sub
Das ist der Code, welcher in einem Allgemeinen Modul einer Arbeitsmappe liegt, welche nicht "MappeZU.xlsm" heißt
Gruß Atilla
Registriert seit: 30.01.2016
Version(en): 2010
22.02.2017, 16:55
(Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2017, 16:56 von DerAnfänger.)
Danke schon mal für eure Hilfe.
So funktionierts:
Code:
Sub MDU_snb()
'Funktioniert
'Soll Daten aus meiner aktuellen Datei in die Datei Beispiel.xlsx, die im Verzeichnis "C:\Test\" steht, kopieren
With GetObject("C:\Test\beispiel.xlsx")
Application.DisplayAlerts = False 'Sicherheitsabfrage ausschalten.
.Sheets(1).Range("A1:A10") = ThisWorkbook.Sheets("Tabelle1").Range("A1:A10").Value
.Close 1
'oder
'.Close savechanges:=True
End With
End Sub
Sub MD_snb()
'Funktioniert
'Kopiert Daten aus der Beispiel.xlsx, die im Verzeichnis "C:\Test" steht, in meine aktuelle Datei!
With GetObject("C:\Test\Beispiel.xlsx")
ThisWorkbook.Sheets(1).Range("A1:A10") = .Sheets(1).Range("A1:A10").Value
.Close 0
End With
End Sub
Hab mich gerade mal etwas im Netz zu "GetObject" umgeschaut und finde dort leider nicht viel.
Könntet ihr so nett sein, ein paar gute Adressen zu posten, die diese Funktion und ihre Methoden gut beschreiben.
Registriert seit: 11.03.2015
Version(en): mittlerweile meistens 2019
(22.02.2017, 15:20)atilla schrieb: Aber bei mir passiert da etwas eigenartiges. Wenn ich die Datei öffne ist sie ohne Tabellenblätter. Nicht da!
Ich meine mich zu erinnern, dass mit GetObject die Datei ausgeblendet geöffnet wird. Wenn Du dann speicherst, bleibt das auch ausgeblendet beim nächsten öffnen.
Warum machst Du es nicht über Workbook.open und schaltest Screenupdating vorher auf false und nachher wieder auf true?
Gruß
Michael