Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Codeabwandlung
#1
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.
Antworten Top
#2
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:
  • DerAnfänger
Antworten Top
#3
@attila

So weit war ich auch schon, funktionierte bei mir aber nicht.
Antworten Top
#4
(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
Antworten Top
#5
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:
  • DerAnfänger
Antworten Top
#6
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
Antworten Top
#7
(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
Antworten Top
#8
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
Antworten Top
#9
Rainbow 
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.
Antworten Top
#10
(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
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • DerAnfänger
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste