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.

Code umdrehen!
#1
Hallo liebe Excelgemeinde,


mit folgenden Code kopieren ich Daten samt Formate von eine Exceldatei zu meiner Datei in der ich diesen Code ausführe:

Code:
Sub ImportDaten()
Dim Dateiname  As String
Dim Datei      As Object
Dim wsQuelle As Workbook
Dim wsZiel1 As Worksheet
Dim wsZiel2 As Worksheet
Dim wsZiel3 As Worksheet
Dim wsZiel4 As Worksheet
Dim wsZiel5 As Worksheet
Dim wsQuelle1 As Worksheet
Dim wsQuelle2 As Worksheet
Dim wsQuelle3 As Worksheet
Dim wsQuelle4 As Worksheet
Dim wsQuelle5 As Worksheet

   Dateiname = Application.GetOpenFilename("Excel Datei, *.*") ' Datei auswählen
    If Dateiname = "Falsch" Then Exit Sub ' bei Abbruch
   Application.ScreenUpdating = False
   Dim var
      var = MsgBox("Sind Sie sicher, dass Sie die Daten importieren möchten? ", vbYesNo)
      If var = 7 Then
         Exit Sub
      Else
   Set Datei = Workbooks.Open(Dateiname) ' Datei öffnen
    Set wsZiel1 = ThisWorkbook.Sheets("produkte")
        wsZiel1.Cells.ClearContents
        wsZiel1.Cells.ClearFormats
    Set wsQuelle1 = Datei.Worksheets("produkte")
    wsQuelle1.Cells.Copy Destination:=ThisWorkbook.Sheets("produkte").Cells
    Set wsZiel2 = ThisWorkbook.Sheets("kunden")
        wsZiel2.Cells.ClearContents
        wsZiel2.Cells.ClearFormats
    Set wsQuelle2 = Datei.Worksheets("kunden")
    wsQuelle2.Cells.Copy Destination:=ThisWorkbook.Sheets("kunden").Cells
    Set wsZiel3 = ThisWorkbook.Sheets("LN")
        wsZiel3.Cells.ClearContents
        wsZiel3.Cells.ClearFormats
    Set wsQuelle3 = Datei.Worksheets("LN")
    wsQuelle3.Cells.Copy Destination:=ThisWorkbook.Sheets("LN").Cells
    Set wsZiel4 = ThisWorkbook.Sheets("zwischen")
        wsZiel4.Cells.ClearContents
        wsZiel4.Cells.ClearFormats
    Set wsQuelle4 = Datei.Worksheets("zwischen")
    wsQuelle4.Cells.Copy Destination:=ThisWorkbook.Sheets("zwischen").Cells
    Set wsZiel5 = ThisWorkbook.Sheets("Attribute")
        wsZiel5.Cells.ClearContents
        wsZiel5.Cells.ClearFormats
    Set wsQuelle5 = Datei.Worksheets("Attribute")
    wsQuelle5.Cells.Copy Destination:=ThisWorkbook.Sheets("Attribute").Cells
    wsQuelle1.Parent.Close SaveChanges:=False
    Set wsQuelle1 = Nothing
    Set wsQuelle2 = Nothing
    Set wsQuelle3 = Nothing
    Set wsQuelle4 = Nothing
    Set wsQuelle5 = Nothing
    Set wsZiel1 = Nothing
    Set wsZiel2 = Nothing
    Set wsZiel3 = Nothing
    Set wsZiel4 = Nothing
    Set wsZiel5 = Nothing
    End If
End Sub

Wie muss ich den Code ändern damit er genau das umgekehrte macht, also aus der Datei in der ich den Code ausführe die Daten in einer anderen Datei die noch nicht existiert und "upload.xls" heißen soll?


Für eure Hilfe danke ich im Voraus
LG
Alexandra
Antworten Top
#2
Moin Alexandra,

(22.06.2014, 20:46)cysu11 schrieb: Wie muss ich den Code ändern damit er genau das umgekehrte macht, also aus der Datei in der ich den Code ausführe die Daten in einer anderen Datei die noch nicht existiert und "upload.xls" heißen soll?

Gar nicht, denn eine Datei, die es nicht gibt, kann keinen Namen haben.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#3
Hallo Günther,

vielen Dank für dein Antwort!

Wie ich schon geschrieben habe, die Datei soll dann "upload.xls" heißen und soll per Code vor dem Kopieren erstellt werden!


Vielen Dank
VG
Alexandra
Antworten Top
#4
Hallo Alexandra,

Zitat:Wie ich schon geschrieben habe, die Datei soll dann "upload.xls" heißen und soll per Code vor dem Kopieren erstellt werden!

Bist Du sicher, daß Du weißt, was Du erreichen will?

Wenn ich eine neue Datei erstelle, dann ist das Teil leer.
Und wenn ich dann aus dieser Datei etwas kopieren will, dann ... richtig, dann kann ich die Zelleninhalte auch gleich in der Zieldatei löschen.
Den Umweg über das Kopieren, den kann ich mir glatt sparen.

Es sei denn, ich habe was falsch verstanden. In diesem Fall aber eher wohl nicht.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#5
Hallo Peter,


anscheinend habe ich mich etwas unverständlich ausgedrückt!

Hier nochmals einfacher :)

DateiA ist die Quelldatei(aus dieser Datei wird der Code ausgeführt)
DateiB ist die Zieldatei (diese existiert noch nicht und soll durch den Code erstellt werden)

Sobald die DateiB erstellt ist, soll aus DateiA alle gefüllten Cells in den im Code beschrieben Blätter kopiert werden und in DateiB eingefügt werden! Achtung der o.g. Code macht momentan fast das Gegenteil, nur das aus DateiB die bereits existiert nach DateiA kopiert!!!!


Ich hoffe das ist jetzt etwas verständlicher! :)

Vielen Dank
VG
Alexandra
Antworten Top
#6
Hallo Alexandra,

vielleicht einfach so:

Code:
Sub Exportieren()
  ThisWorkbook.SaveCopyAs "upload.xls"
End Sub

Gruß Uwe
Antworten Top
#7
Hallo Uwe,


vielen Dank für dein Vorschlag, jedoch will ich nicht die ganze Mappe kopieren, sondern wirklich nur wie beschrieben!


Vielen Dank
VG
Alexandra
Antworten Top
#8
Hallo Alexandra,

dann vielleicht so:

Code:
Sub ExportDaten()
  If MsgBox("Sind Sie sicher, dass Sie die Daten exportieren möchten? ", vbYesNo) = vbYes Then
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("produkte").Copy
    ThisWorkbook.Sheets("kunden").Copy ActiveWorkbook
    ThisWorkbook.Sheets("LN").Copy ActiveWorkbook
    ThisWorkbook.Sheets("zwischen").Copy ActiveWorkbook
    ThisWorkbook.Sheets("Attribute").Copy ActiveWorkbook
    ActiveWorkbook.SaveAs "upload.xls"
    Application.ScreenUpdating = True
  End If
End Sub

Gruß Uwe
Antworten Top
#9
Hallo Alexandra,

Zitat:Sobald die DateiB erstellt ist, soll aus DateiA alle gefüllten Cells in den im Code beschrieben Blätter kopiert werden und in DateiB eingefügt werden!

Es mag ja sein, daß ich zu dusselig bin, zu begreifen was Du tun willst.
Für mich ist das aber doch nichts anderes, als die bestehende Datei unter einem anderen Namen zu speichern und (vielleicht noch) die Tabellenblätter umzubenennen.

@ Uwe,
freut mich, in Dir einen Leidensgefährten gefunden zu haben :05:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#10
Hi Peter,

vielleicht gibt es noch mehr Worksheets, die nicht in die neue Datei sollen?
Und/oder die neue Datei soll VBA-frei sein?

Gruß Uwe
Antworten Top


Gehe zu:


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