Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Zeilen variabel kopieren | Herbers Excel-Forum


Betrifft: Zeilen variabel kopieren von: Space
Geschrieben am: 25.01.2010 13:36:15

Hallo,

wie kann ich es realisieren, dass z.B.: Spalte 1 in der ersten Excel File kopiert wird und in einem zweiten Excel File in die Spalte ? (z.B.: 6) eingefügt wird?

Anbei ein kleines Beispiel, was ich vorhabe: https://www.herber.de/bbs/user/67465.xls

Vielen Dank für die Hilfe!

Gruß
Space

  

Betrifft: AW: Zeilen variabel kopieren von: Rudi Maintaire
Geschrieben am: 25.01.2010 13:40:40

Hallo,
klar geht das.

Workbooks("File1.xls").sheets(1).columns(1).copy
Workbooks("File2.xls").sheets(1).columns(6).insert


Gruß
Rudi


  

Betrifft: wenn es keinen Logischen Zusammenhang gibt... von: Tino
Geschrieben am: 25.01.2010 13:53:25

Hallo,
geht’s nur so.

Dim Bereich As Range
Dim oWB As Workbook, oWS As Worksheet
Dim A As Long

Set Bereich = Range("A2:K26")
Set oWB = Workbooks.Add(1)
Set oWS = oWB.Sheets(1)

For Each Bereich In Bereich.Columns
 Select Case Bereich.Cells(1, 1).Column
    Case 1: Bereich.Copy oWS.Cells(2, 6)
    Case 2: Bereich.Copy oWS.Cells(2, 1)
    Case 3: Bereich.Copy oWS.Cells(2, 4)
    Case 4: Bereich.Copy oWS.Cells(2, 7)
    Case 5: Bereich.Copy oWS.Cells(2, 5)
    Case 6: Bereich.Copy oWS.Cells(2, 2)
    Case 7: Bereich.Copy oWS.Cells(2, 3)
    Case 8: Bereich.Copy oWS.Cells(2, 8)
    Case 9: Bereich.Copy oWS.Cells(2, 11)
    Case 10: Bereich.Copy oWS.Cells(2, 10)
    Case 11: Bereich.Copy oWS.Cells(2, 9)
 End Select
Next Bereich
Gruß Tino


  

Betrifft: VBA : Spalten versetzt kopieren von: NoNet
Geschrieben am: 25.01.2010 14:23:51

Hallo space,

so geht's :

Sub SpaltenVersetztKopieren()
    Dim wsQuelle As Worksheet, wsZiel As Worksheet
    Dim arrSpalte, lngS As Long, lngZ As Long
    arrSpalte = Array(2, 6, 7, 3, 5, 1, 4, 8, 11, 10, 9) 'Hier die Reihenfolge angeben !
    
    Set wsQuelle = ActiveSheet              'Aktuelles Blatt
    Set wsZiel = Workbooks.Add.Sheets(1)    'Neue Mappe, erstes Blatt
    'oder :
    'Set wsZiel=workbooks("Zielmappe.xls").Sheets("Zielblatt") 'muss geöffnet sein !
    
    For lngS = LBound(arrSpalte) To UBound(arrSpalte)
        lngZ = lngZ + 1
        wsQuelle.Range("A2:K26").Columns(arrSpalte(lngS)).Copy wsZiel.Cells(1, lngZ)
    Next
End Sub
Gruß, NoNet


  

Betrifft: AW: VBA : Spalten versetzt kopieren von: Space
Geschrieben am: 25.01.2010 15:56:27

Hallo NoNet,

ich probiers gerade mal aus!

Gruß
Space


  

Betrifft: AW: Zeilen variabel kopieren von: Space
Geschrieben am: 25.01.2010 15:52:22

Hallo,

habe eure Tipps versucht zu beherzigen, bin aber nicht sehr schlau daraus geworden. Habe das Problem jetzt mit folgendem Code gelöst:

Private Sub CommandButton9_Click()
 
Dim wks As Worksheet
'Excel Datei Kundendaten.xls öffnen
     Set wks = Workbooks.Open(Filename:= _
         "H:-Pfad-\Datei.xls").Sheets(1)
 
'Benötigte Zellen kopieren und im Tabellenblatt "Kundenkontakte" einfügen
     'Kopieren aus Kundendaten
     With wks
     .Range(.Cells(5, 9), .Cells(5, 9).End(xlDown)).Resize(, 1).Copy
     Workbooks("Data Generator.xls").Sheets("Partner Kontakte").Range("C18").Insert
     
     .Range(.Cells(5, 11), .Cells(5, 11).End(xlDown)).Resize(, 1).Copy
     Workbooks("Data Generator.xls").Sheets("Partner Kontakte").Range("D18").Insert
     
     .Range(.Cells(5, 7), .Cells(5, 7).End(xlDown)).Resize(, 1).Copy
     Workbooks("Data Generator.xls").Sheets("Partner Kontakte").Range("E18").Insert
     
     .Range(.Cells(5, 8), .Cells(5, 8).End(xlDown)).Resize(, 1).Copy
     Workbooks("Data Generator.xls").Sheets("Partner Kontakte").Range("F18").Insert
        
     End With  

'Schließen der Kundendaten
wks.Parent.Close

End Sub
jetzt ergeben sich 2 Probleme:

1) es wir nur bis zur ersten leeren Zelle kopiert. Da die Liste aber immer mal wieder 1-2 leere Zellen hat, wird nicht die ganze Spalte sondern nur ein Teil kopiert ;(

2) es werden mal wieder alle Formatierungen übertragen


Bitte um Hilfe!
Gruß
Space


  

Betrifft: Alternative (ungetestet) von: NoNet
Geschrieben am: 25.01.2010 16:08:09

Hallo Space,

deine Lösung erwartet nun ja doch eine etwas andere Tabelle/Mappe als in deinem Beispiel gepostet - darauf waren allerdings die Lösungsvorschläge gemünzt !! Da gab es auch nicht viel zu kapieren, sondern nur zu kopieren (und einzufügen !).

Hier eine (ungetestete) Alternative zu Deinem Code (kombiniert mit meinem ersten Lösungsvorschlag) :

Sub SpaltenVersetztKopieren2()
    Dim wsQuelle As Worksheet, wsZiel As Worksheet
    Dim arrSpalteQ, arrSpalteZ, lngS As Long
    arrSpalteQ = Array(9, 11, 7, 8) 'Hier die Spaltenreihenfolge der QUELLE angeben !
    arrSpalteZ = Array(3, 4, 5, 6) 'Hier die Spaltenreihenfolge des ZIELS angeben !
    
    Set wsQuelle = Workbooks.Open(Filename:="H:\Pfad\Datei.xls").Sheets(1)
    Set wsZiel = Workbooks("Data Generator.xls").Sheets("Partner Kontakte") 'muss geöffnet sein
    
    For lngS = LBound(arrSpalte) To UBound(arrSpalte)
        wsQuelle.Range(wsQuelle.Cells(5, arrSpalteQ(lngS)), _
            wsQuelle.Cells(5, arrSpalteQ(lngS)).End(xlDown)).Copy _
            wsZiel.Cells(18, arrSpalteQ(lngS))
    Next
End Sub
In den beiden ARRAY-Variablen werden lediglich die relevanten Spalten angegeben (3=Spalte C, 4=Spalte D etc.).

Gruß, NoNet


  

Betrifft: AW: Alternative (ungetestet) von: Space
Geschrieben am: 25.01.2010 16:23:44

Hallo NoNet,

deine Variante hatte ich bei meinem lezten Post noch nicht getestet. Habe Sie ausprobiert und es kommt schon ziemlich genau hin. Deinen letzten Code den du gepostest hast für denke ich perfekt auf mein Problem passen. Deshalb habe ich Ihn gleich angepasst und ausprobiert. Leider kommt Laufzeitfehler 13: Typen unverträglich an dieser Stelle:

For lngS = LBound(arrSpalte) To UBound(arrSpalte)
wsQuelle.Range(wsQuelle.Cells(5, arrSpalteQ(lngS)), _
wsQuelle.Cells(5, arrSpalteQ(lngS)).End(xlDown)).Copy _
wsZiel.Cells(18, arrSpalteQ(lngS))

Danke für deine super Vorschläge!
Gruß
Space


  

Betrifft: AW: Alternative (ungetestet) von: Space
Geschrieben am: 25.01.2010 16:27:17

Hallo NoNet,

habe den Fehler gefunden, hattest nur Q und Z bei den arrSpalten vergessen. Aber jetzt habe ich dasselbe Problem wie mit meinem Code. Er kopiert nicht alles sondern lediglich bis zur ersten Lücke .... Hat jemand da eine Idee??

Gruß
Space


  

Betrifft: AW: Alternative (ungetestet) von: Space
Geschrieben am: 25.01.2010 16:46:48

Hallo NoNet,

die Spaltenzuordnung (alt/neu) klappt mit dem Code leider doch nicht ;(!

Gruß
Space


Beiträge aus den Excel-Beispielen zum Thema "Zeilen variabel kopieren"