Clever-Excel-Forum

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

vielleicht einfach so:

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

Gruß Uwe
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
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
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:
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
Seiten: 1 2 3