Clever-Excel-Forum

Normale Version: Codeabwandlung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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.
Hallo,

ich würd' einfach mal die teile links und rechts des Gleichheitszeichens miteinander austauschen.
@attila

So weit war ich auch schon, funktionierte bei mir aber nicht.
(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.
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 ...
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!
(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.
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
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.
(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?
Seiten: 1 2