Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

WS aus einem WB in ein anderes

WS aus einem WB in ein anderes
07.06.2019 16:09:38
Edgar
Hallo,
ich weiß, das Thema war schon so oft dran und ich habe ganz viel gelesen und ausprobiert. Leider bin ich bis jetzt nicht zu einem Ergebniss gekommen. Ich fange mal an:
Ich habe auf einem WS meies geöffneten WB einen CB gedrückt. Darauf hin soll ein anderes WS aus diesem WB (nennen wir es WS1) in ein neu zu erstellendes WB kopiert werden.
Das funktioniert.
Jetzt will ich im Anschluß ein zweites WS kopieren.
Fakten WB 1 mit WS1, WS2 und WS3 liegt im Pfad c:\test\WB1
Auf WS3 habe ich den CB1 gedrückt
Kopiert wird das WS1 in ein neues WB2 im Pfad c:\test\WB1\Auswahl
Da finde ich dann auch WB2 mit WS1
Jetzt möchte ich in der Folge WS2 aus WB1 an letzte Stelle in WB2 kopieren und auf WS3 verbleiben/zurückkehren.
Was mir absolut fehlt sind die Dinge: Was muss offen und was aktiv sein; auf welchen WS muss ich mich befinden, usw.
Hoffentrlich nicht zu sehr um die Ecke beschrieben!
Vielen Dank im Vorraus für Eure Hilfe,
Ed

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
dann zeig doch mal..
07.06.2019 16:14:24
UweD
das Makro
oder besser noch eine Musterdatei.
Dann müssen wir hier nicht allse nachbauen (Was dann meist auch noch anders aussieht)
AW: dann zeig doch mal..
07.06.2019 16:28:58
Edgar

Sub ergebniss_spieltag_kopieren()
Dim pad As String, name As String, datei As String
Application.DisplayAlerts = False
pfad = ThisWorkbook.path & "\Ergebnisse\"
name = "Ergebniss_Spieltag_" & worksheets("Ergebniss_spieltag_00").Cells(3, 6).Value
worksheets("Ergebniss_Spieltag_00").Visible = True
worksheets("Ergebniss_Spieltag_00").Activate
worksheets("Ergebniss_Spieltag_00").Copy
With ActiveWorkbook
.SaveAs Filename:=pfad & name & ".xlsx", FileFormat:=xlWorkbookDefault
.Close SaveChanges:=False
End With
MsgBox ("Ergebnisse gesichert")
End Sub

Anzeige
AW: dann zeig doch mal..
07.06.2019 16:58:54
UweD
Hallo
auf select und activate kann in 99% verzichtet werden
so ?
Sub ergebniss_spieltag_kopieren()
    Dim WB1, WS1, WS2, WS3, WB2
    Dim pfad As String, Name As String, datei As String
      
    Set WB1 = ThisWorkbook
    Set WS1 = WB1.Sheets("Ergebniss_Spieltag_00")
    Set WS2 = WB1.Sheets("WS2")
    Set WS3 = WB1.Sheets("WS3")
      
    Application.DisplayAlerts = False
      
    pfad = WB1.Path & "\Ergebnisse\"
    Name = "Ergebniss_Spieltag_" & WS1.Cells(3, 6).Value
      
    With WS1
        .Visible = True
        .Copy
        .Visible = False

    End With
    
    Set WB2 = ActiveWorkbook
    
    WS2.Copy After:=WB2.Sheets(WB2.Sheets.Count)
    
    With WB2
        .SaveAs Filename:=pfad & Name & ".xlsx", FileFormat:=xlWorkbookDefault
        .Close SaveChanges:=False
    End With
    
    MsgBox ("Ergebnisse gesichert")

End Sub

LG UweD
Anzeige
AW: dann zeig doch mal..
07.06.2019 19:10:42
Edgar
Danke UweD,
und bevor ich das WB2 schließe füre ich die Zeilen von With WS1 bis ...copy after... noch einmal mit dem zweiten WS aus.
Ich habe heute abend leider nicht mehr die Zeit, aber morgen werde ich es gleich ausprobieren. Ich melde mich auf jeden Fall.
Ed
AW: WS aus einem WB in ein anderes
08.06.2019 13:12:17
Edgar
Leider funktioniert es nicht. Ich denke aber der Fehler sitzt vor dem Rechner.
Ich habe den Code so übernommen und gedoppelt. Im ersten Part soll WS1 kopiert werden, im zweiten Part WS2.
Ankoomen tut aber nur WS2.
Ziel, noch einmal definiert, soll sein:
1. WS1 in neues WB kopieren und dieses unter pfad sichern
2. WS2 ebenfalls kopieren und nachdem WS1 sichern.
3. Dann das WB2 speichern.
Bei mir kommt immer nur WS2 im neuen WB an
Code:
Sub ergebniss_spieltag_kopieren()
Dim pfad As String, name As String, datei As String
Dim WB1 As Workbook, WS1 As Worksheet, WS2 As Worksheet, WB2 As Workbook
Set WB1 = ThisWorkbook
Set WS1 = WB1.Sheets("Ergebniss_Spieltag_00")
Set WS2 = WB1.Sheets("Export")
Application.DisplayAlerts = False
pfad = WB1.path & "\Ergebnisse\"
name = "Ergebniss_Spieltag_" & WS1.Cells(3, 6).Value
' WS1 kopieren und in neuer Datei sichern
With WS1
.Visible = True
.Copy
.Visible = False
End With
Set WB2 = ActiveWorkbook
WS1.Copy After:=WB2.Sheets(WB2.Sheets.Count)
With WB2
.SaveAs Filename:=pfad & name & ".xlsx", FileFormat:=xlWorkbookDefault
.Close SaveChanges:=True
End With
'WS2 kopieren und in neuer Datei sichern
With WS2
.Visible = True
.Copy
.Visible = False
End With
Set WB2 = ActiveWorkbook
WS2.Copy After:=WB2.Sheets(WB2.Sheets.Count)
With WB2
.SaveAs Filename:=pfad & name & ".xlsx", FileFormat:=xlWorkbookDefault
.Close SaveChanges:=True
End With
MsgBox ("Ergebnisse gesichert")
End Sub

Anzeige
AW: WS aus einem WB in ein anderes
08.06.2019 15:24:05
Edgar
Leider funktioniert es nicht. Ich denke aber der Fehler sitzt vor dem Rechner.
Ich habe den Code so übernommen und gedoppelt. Im ersten Part soll WS1 kopiert werden, im zweiten Part WS2.
Ankoomen tut aber nur WS2.
Ziel, noch einmal definiert, soll sein:
1. WS1 in neues WB kopieren und dieses unter pfad sichern
2. WS2 ebenfalls kopieren und nachdem WS1 sichern.
3. Dann das WB2 speichern.
Bei mir kommt immer nur WS2 im neuen WB an
Code:
Sub ergebniss_spieltag_kopieren()
Dim pfad As String, name As String, datei As String
Dim WB1 As Workbook, WS1 As Worksheet, WS2 As Worksheet, WB2 As Workbook
Set WB1 = ThisWorkbook
Set WS1 = WB1.Sheets("Ergebniss_Spieltag_00")
Set WS2 = WB1.Sheets("Export")
Application.DisplayAlerts = False
pfad = WB1.path & "\Ergebnisse\"
name = "Ergebniss_Spieltag_" & WS1.Cells(3, 6).Value
' WS1 kopieren und in neuer Datei sichern
With WS1
.Visible = True
.Copy
.Visible = False
End With
Set WB2 = ActiveWorkbook
WS1.Copy After:=WB2.Sheets(WB2.Sheets.Count)
With WB2
.SaveAs Filename:=pfad & name & ".xlsx", FileFormat:=xlWorkbookDefault
.Close SaveChanges:=True
End With
'WS2 kopieren und in neuer Datei sichern
With WS2
.Visible = True
.Copy
.Visible = False
End With
Set WB2 = ActiveWorkbook
WS2.Copy After:=WB2.Sheets(WB2.Sheets.Count)
With WB2
.SaveAs Filename:=pfad & name & ".xlsx", FileFormat:=xlWorkbookDefault
.Close SaveChanges:=True
End With
MsgBox ("Ergebnisse gesichert")
End Sub

Anzeige
AW: WS aus einem WB in ein anderes
08.06.2019 15:43:28
Daniel
Hi
gehe deinen Code mal genau durch, du machst folgendes:
1. das WS1 wird 2x in eine neue Datei kopiert, dann wird diese Datei gespeichert
2. was WS2 wird 2x in eine neun Datei kopiert und dann unter dem gleichen Namen gespeichert wie die erste Datei! dabei überschriebst du natürlich die erste Datei.
wenn du beide Sheets in der gleichen Datei haben willst, probiers mal so (Code gekürzt, nur das wesentliche, bitte ergänzen)
WS1.Copy
WS2.Copy ActiveWorkbook.Sheets(ActiveWorkbook.sheets.Count)
ActiveWorkbook.SaveAs Filename:=pfad & name & ".xlsx", FileFormat:=xlWorkbookDefault
ActiveWorkbook.Close

Gruß Daniel
Anzeige
AW: WS aus einem WB in ein anderes
09.06.2019 11:20:12
Edgar
Danke Daniel,
funktioniert. Ich verstehe zwar nicht, weshal WS2 vor WS1 im Ziel WB steht, aber egal. Hast Du noch eine Idee, wie ich die WS vor dem sichern umbenennen kann?
Ed
Sub ergebniss_spieltag_kopieren()
Dim pfad As String, name As String, datei As String
Dim WB1 As Workbook, WS1 As Worksheet, WS2 As Worksheet, WB2 As Workbook
Set WB1 = ThisWorkbook
Set WS1 = WB1.Sheets("Ergebniss_Spieltag_00")
Set WS2 = WB1.Sheets("Export")
Application.DisplayAlerts = False
pfad = WB1.path & "\Ergebnisse\"
name = "Ergebniss_Spieltag_" & WS1.Cells(3, 6).Value
With WS1
.Visible = True
.Copy
.Visible = False
End With
With WS2
.Visible = True
.Copy ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
.Visible = False
End With
ActiveWorkbook.SaveAs Filename:=pfad & name & ".xlsx", FileFormat:=xlWorkbookDefault
ActiveWorkbook.Close
MsgBox ("Ergebnisse gesichert")
End Sub

Anzeige
AW: WS aus einem WB in ein anderes
09.06.2019 14:26:21
Daniel
Hi
schau dir mal die Copy-Funktion in der Hilfe an.
du siehst dort, dass du zwei Optionen hast, den Einfügepunkt zu definieren: After:= und Before:= (also vor oder nach dem angebenen Sheet)
wenn du jetzt bei so einer Anweisung mit mehrern möglichen Parametern nur den Wert hinschreibst, aber nicht den Parameternamen, so wird einfach der erste Parameter aus dieser Auflistung verwendet.
Willst einen anderen Paramter, musst du diesen angeben ...Copy(After:=ActiveWorkbook.Sheets.Count)
das Umbennen geht ganz einfach.
Nach dem Kopieren und Einfügen ist immer das eingefügte Blatt das aktive Blatt.
du kannst also den Namen einfach mit ActiveSheet.Name = "neuer Name" ändern.
Gruß Daniel
Anzeige
AW: WS aus einem WB in ein anderes
09.06.2019 11:36:55
Edgar
Mit dem Umbenennen hat sich erledigt. Und vermutlich wird das zweite WS "before" eingefügt.
Allen die mir geholfen haben mochte ich meinen herzlichen Dank aussprechen!
AW: WS aus einem WB in ein anderes
09.06.2019 14:28:32
Daniel
Richtig.
es gibt ja noch die Option "AFTER:="
aber die muss man explizit angeben, "Before:=" wird automatisch eingesetzt, wenn der Parametername nicht angegeben ist.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige