Kopieren von Zellen zwischen Arbeitsmappen
Könnte mir bitte jemand helfen mit VBA-code.
Ich bin versucht zu kopieren 2 Bereiche von Zellen zwischen Arbeitsmappen (beide Arbeitsmappen erstellt werden sollte, im Voraus ich will nicht den code, um eine neue Arbeitsmappe erstellen, on the fly).
Erstens muss ich kopieren Sie diese Bereiche-
Von 'Blatt 3' booka.xls, Range: Zelle H5 bis zur letzten Zeile in Spalte H mit Daten
kopieren Sie diese auf "Sheet 1" bookb.xls beginnend in Zelle B2, wie viele Zellen nach unten in der Spalte B
Zweitens muss ich kopieren, diese Bereiche-
Von 'Blatt 3' booka.xls, Range: Zelle K5, die Letzte Zeile in Spalte K mit Daten
kopieren Sie diese auf "Sheet 1" bookb.xls beginnend in Zelle D2, wie viele Zellen nach unten in die D-Spalte
Hier ist was ich habe, so weit:
Sub CopyDataBetweenBooks()
Dim iRow As Long
Dim wksFr As Worksheet
Dim wksTo As Worksheet
wksFr = "C:\booka.xls"
wksTo = "C:\bookb.xls"
Set wksFrom = Workbooks(wksFr).Worksheets("Sheet 3")
Set wksTo = Workbooks(wksTo).Worksheets("Sheet 1")
With wksFrom
For iRow = 1 To 100
.Range(.Cells(iRow, 8), .Cells(iRow, 9)).Copy wksTo.Cells(iRow, 8)
Next iRow
End With
End Sub
Sind da Leerzeichen in die Spalten?
ja, die Zelle Werte variieren, aber es wird erwartet, dass es einige Leerzeichen
Suchen Sie die Arbeitsmappen.Open-Funktion, da ich nicht glaube, Sie können die Arbeitsmappen öffnen, wie Sie tun. Wenn es Rohlinge durchsetzt schauen die SpecialCells-Eigenschaft des range. Nehmen Sie einen weiteren Riss an ihm und ich werde Ihnen helfen mit dem was ich habe.
InformationsquelleAutor trunks | 2011-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie haben den Verweis auf
wksFrom
undwksTo
, hier ist, was der code sollteStoppt bei der ersten leeren Zelle als auch, wenn ich mich nicht Irre.
Ja. Jedoch, OP-code-doesnt erfordern die Notwendigkeit zu prüfen, für die Rohlinge. Die Annahme ist, dass die Spalte mit Werten gefüllt, und es gibt keine Lücken zwischen den Zellen.
hat er nicht konkret sagen, in einem Kommentar zu seiner Antwort, dass die Werte voneinander abweichen, aber es werden voraussichtlich einige Rohlinge? Vielleicht bin ich Missverständnis, ihn.
Ja, er Tat. Ich habe es nicht gelesen, bis Sie darauf hingewiesen. Weder den code, noch das andere von Ihnen positiv bewertet werden Antwort hat diesen Punkt berücksichtigt. Es wäre schon besser, wenn die Kommentare durch die OP waren zusammengefasst in der Frage um die Anforderungen im detail als in den Kommentaren, wenn Sie gefragt von. Danke.
InformationsquelleAutor shahkalpesh
Hier ist ein Beispiel, wie dies einer der Spalten:
Wie Sie gesagt haben, in den Kommentaren, dieser code oben wird nicht funktionieren, für Bereiche mit Bereiche, so ersetzen Sie in den folgenden code für die
lastrow
Linie:Nun im Idealfall könnten Sie diese in eine Unterroutine, nahm in einem origin-name der Arbeitsmappe, Arbeitsblatt-name/- Nummer und range, sowie eine Ziel-Arbeitsmappe name, Arbeitsblatt-name/- Nummer und range. Dann würden Sie nicht haben, wiederholen Sie einige der code.
Ja, deshalb war ich auch darauf hinweist, dass Sie brauchen den
SpecialCells
Eigenschaft desRange
. Wenn Sie gewährleisten wollen, dass die Leerzeichen, müssen Sie starten Sie Ihre Auswahl auf 65536 (Letzte Zelle) und arbeiten Sie Ihren Weg bis zu der letzten gefüllten Punkt mit xlUp. Ich habe Euch einen Schubs, aber Sie haben zu tun, einige der Beinarbeit.Sehen Sie die änderungen
InformationsquelleAutor jonsca
Können Sie mit speziellen Zellen, wie Jonsca vorgeschlagen hat. Allerdings habe ich in der Regel nur eine Schleife durch die Zellen. Ich finde, es gibt mir mehr Kontrolle über was genau ich kopieren. Es gibt einen sehr kleinen Effekt auf die Leistung. Allerdings habe ich das Gefühl, dass im Büro platzieren, so dass Sie sicher, dass die Daten richtig und vollständig sind, ist die Priorität. Ich schrieb eine Antwort auf eine Frage wie diese kann hier gefunden werden:
Gibt es auch eine kleine demonstration von iDevelop auf, wie man verwendet spezielle Zellen, die für den gleichen Zweck. Ich denke, es wird dir helfen. Viel Glück!
Update
In Reaktion auf...
Ich wollte nur hinzufügen, dass das tutorial im link oben wird die Angelegenheit brachte in Ihrem Kommentar. Anstelle der Verwendung der
.End(xlDown)
Methode, eine Schleife über die Zellen, bis Sie erreichen die Letzte Zeile, die Sie abrufen.UsedRange.Rows.Count
.InformationsquelleAutor Lopsided