Informationen und Beispiele zum Thema CommandButton | |
---|---|
![]() |
CommandButton-Seite mit Beispielarbeitsmappe aufrufen |
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 BereichGruß 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 SubGruß, 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 Subjetzt ergeben sich 2 Probleme:
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 SubIn den beiden ARRAY-Variablen werden lediglich die relevanten Spalten angegeben (3=Spalte C, 4=Spalte D etc.).
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