Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1704to1708
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

Nur Zellen mit Inhalt aus externer Datei kopieren

Nur Zellen mit Inhalt aus externer Datei kopieren
31.07.2019 09:35:15
Senad
Hallo Zusammen,
Ich habe ein Makro zum Kopieren von Spalte A bis C erstellt, die Inhalte aus einer anderen Exceldatei, welche in zwei Tabelletenblättern sind sollen untereinander kopiert werden, jedoch eigentlich nur Inhalte wo auch was drin geschrieben steht. Ich habe das Ganze temporär einfach mit Range A5:C1000 gelöst, wohl wissend das es keine gute Lösung darstellt, jedoch weiss ich nicht weiter und meine sonstigen Ansätze funktionieren nicht, vielleicht kann mir ja hier jemand eine gute Lösung anbieten. Also das Hauptproblem ist, dass nur Zellen mit Inhalt kopiert werden sollen und nicht wahllose 1000 leere Zeilen.
Hier der Code:
Option Explicit
Sub Load()
Dim WBZiel As Workbook, ExportDatei As Variant
Dim WBQuelle As Workbook, WSZiel As Worksheet
Set WBZiel = ThisWorkbook
Application.ScreenUpdating = False
'DateiÖffnen Dialog anbieten
ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.xlsm*", , "Bitte die Datei zum  _
Kopieren der Stammdaten öffnen ...")
ExportDatei = CStr(ExportDatei)
If ExportDatei = "Falsch" Then Exit Sub
'öffnen der ausgewählten Datei
Set WBQuelle = Workbooks.Open(ExportDatei)
'kopieren des Blattinhaltes und Schließen der Quell-Datei
With WBQuelle
.Sheets("Chemikalien").Range("A5:c1000").Copy WBZiel.Sheets("Stammdaten").Range("A" &  _
Cells(Rows.Count, 1).End(xlUp).row + 1)
.Sheets("Labormaterialien").Range("A5:c1000").Copy WBZiel.Sheets("Stammdaten").Range("A" &  _
Cells(Rows.Count, 1).End(xlUp).row + 1)
.Close savechanges:=False
End With
Application.ScreenUpdating = True
End Sub

Ich hoffe mir kann jemand weiterhelfen.
Lieben Gruß und vielen Dank im Voraus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur Zellen mit Inhalt aus externer Datei kopieren
31.07.2019 09:49:46
peterk
Hallo
Versuch mal:

.Sheets("Chemikalien").Range("A5:c1000").SpecialCells(xlCellTypeConstants).Copy
Diese Zeile solltest Du ändern:

WBZiel.Sheets("Stammdaten").Range("A" & Cells(Rows.Count, 1).End(xlUp).row + 1)
in

WBZiel.Sheets("Stammdaten").Range("A" & WBZiel.Sheets("Stammdaten").Cells(Rows.Count, 1).End( _
xlUp).row + 1)

AW: Nur Zellen mit Inhalt aus externer Datei kopieren
31.07.2019 09:56:16
Daniel
Hi
um welche "leeren" Zeilen geht's denn?
nur um die am Ende der Tabelle oder auch um die mitten drin?
die am Ende stören eigentlich nicht, aber falls du deinen kopiervorgang and die Anzahl der Zeilene in der Quelle anpassen willst, die Lösung steht in deinem Code doch eigentlich schon drin: End(xlUP). Du musst das nur auch bei der Auswahl der zu kopierenden Zellen einsetzen:
With WBQuelle
With .Sheets("Chemikalien")
.Range("A5:C" & .Cells(.Rows.Count, 1).End(xlUp).Row).Copy WBZiel....
end With
with .Sheets("Labormaterialien")
.Range("A5:C" & .Cells(.Rows.Count, 1).End(xlup).row).Copy WBZiel....
end with
end with
Gruß Daniel
Anzeige
AW: Nur Zellen mit Inhalt aus externer Datei kopieren
31.07.2019 10:20:52
Senad
Hallo Ihr Beiden!
Also vielen lieben Dank für eure Ansätze, die haben mir wirklich sehr weitergeholfen!
Ich habe jetzt anhand des Vorschlags von peter eine Lösung implementiert:
Option Explicit
Sub Load()
Dim WBZiel As Workbook, ExportDatei As Variant
Dim WBQuelle As Workbook, WSZiel As Worksheet
Dim lZeile As Long
On Error GoTo Fehler
Set WBZiel = ThisWorkbook
For lZeile = 2 To 3000
Sheet5.Cells(lZeile, 1).Clear
Sheet5.Cells(lZeile, 2).Clear
Sheet5.Cells(lZeile, 3).Clear
Next lZeile
Application.ScreenUpdating = False
'DateiÖffnen Dialog anbieten
ExportDatei = Application.GetOpenFilename()
'öffnen der ausgewählten Datei
Set WBQuelle = Workbooks.Open(ExportDatei)
'kopieren des Blattinhaltes und Schließen der Quell-Datei
With WBQuelle
.Sheets("Chemikalien").Range("A5:c1000").SpecialCells(xlCellTypeConstants).Copy WBZiel. _
Sheets("Stammdaten").Range("A" & WBZiel.Sheets("Stammdaten").Cells(Rows.Count, 1).End(xlUp).row + 1)
.Sheets("Labormaterialien").Range("A5:c1000").SpecialCells(xlCellTypeConstants).Copy  _
WBZiel.Sheets("Stammdaten").Range("A" & WBZiel.Sheets("Stammdaten").Cells(Rows.Count, 1).End(xlUp).row + 1)
.Close savechanges:=False
Application.ScreenUpdating = True
End With
Fehler:
Exit Sub
End Sub

Funktioniert auch soweit alles, jetzt wäre halt noch ein kleines Sahnehäubschen, wenn es möglich ist, eine Abfrage einzustellen, dass nur kopiert werden soll, wenn eine Spalte einen bestimmten Wert aufweist. Ist das irgendwie noch möglich? Also nur die Zeilen kopieren, wo Spalte x Wert y aufweist?
Das wäre allerdings echt ein Sahnehäubschen :D
Danke bis hierhin
Anzeige
AW: Nur Zellen mit Inhalt aus externer Datei kopieren
31.07.2019 10:20:53
Senad
Hallo Ihr Beiden!
Also vielen lieben Dank für eure Ansätze, die haben mir wirklich sehr weitergeholfen!
Ich habe jetzt anhand des Vorschlags von peter eine Lösung implementiert:
Option Explicit
Sub Load()
Dim WBZiel As Workbook, ExportDatei As Variant
Dim WBQuelle As Workbook, WSZiel As Worksheet
Dim lZeile As Long
On Error GoTo Fehler
Set WBZiel = ThisWorkbook
For lZeile = 2 To 3000
Sheet5.Cells(lZeile, 1).Clear
Sheet5.Cells(lZeile, 2).Clear
Sheet5.Cells(lZeile, 3).Clear
Next lZeile
Application.ScreenUpdating = False
'DateiÖffnen Dialog anbieten
ExportDatei = Application.GetOpenFilename()
'öffnen der ausgewählten Datei
Set WBQuelle = Workbooks.Open(ExportDatei)
'kopieren des Blattinhaltes und Schließen der Quell-Datei
With WBQuelle
.Sheets("Chemikalien").Range("A5:c1000").SpecialCells(xlCellTypeConstants).Copy WBZiel. _
Sheets("Stammdaten").Range("A" & WBZiel.Sheets("Stammdaten").Cells(Rows.Count, 1).End(xlUp).row + 1)
.Sheets("Labormaterialien").Range("A5:c1000").SpecialCells(xlCellTypeConstants).Copy  _
WBZiel.Sheets("Stammdaten").Range("A" & WBZiel.Sheets("Stammdaten").Cells(Rows.Count, 1).End(xlUp).row + 1)
.Close savechanges:=False
Application.ScreenUpdating = True
End With
Fehler:
Exit Sub
End Sub

Funktioniert auch soweit alles, jetzt wäre halt noch ein kleines Sahnehäubschen, wenn es möglich ist, eine Abfrage einzustellen, dass nur kopiert werden soll, wenn eine Spalte einen bestimmten Wert aufweist. Ist das irgendwie noch möglich? Also nur die Zeilen kopieren, wo Spalte x Wert y aufweist?
Das wäre allerdings echt ein Sahnehäubschen :D
Danke bis hierhin
Anzeige
AW: Nur Zellen mit Inhalt aus externer Datei kopieren
31.07.2019 10:36:11
peterk
Hallo
Du könntest den Autofilter dazu benutzten, z.B.

WBQuelle.Range("$A$1:$C$1000").AutoFilter Field:=1, Criteria1:="y", Operator:=xlOr, Criteria2:=" _
z"
d.h. Er legt einen Autofilter auf den Bereich an und sucht in der 1.Spalte des Bereichs nach "y" ODER "z", alle anderen Zeilen werden ausgeblendet. Nun mußt Du Deine Copy Befehl ändern, statt:

.Sheets("Chemikalien").Range("A5:c1000").SpecialCells(xlCellTypeConstants).Copy

.Sheets("Chemikalien").Range("A5:c1000").SpecialCells(xlCellTypeVisible).Copy

Anzeige

342 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige