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

Daten mit Makro selektieren und importieren

Daten mit Makro selektieren und importieren
16.01.2015 11:07:42
Harry
Hallo,
ich arbeite jetzt schon seit einiger zeit an einem tool das mir (hoffentlich) jede Menge Arbeit abnehmen wird :) zur fertigstellung fehlt mir jedoch noch ein Makro das sich mit meinen Fähigkeiten leider bisher nicht realisieren ließ.
Das Makro soll aus einer sehr großen Excel Datei Daten selektiren und in eine Andere Excel Datei importiern.
-die Spalten der Ausgangsdatei sind jedoch zufällig angeordne
-das Makro soll die Spalte finden in deren erster Zeile "Name" steht
-dann soll es alle Zeilen ausblenden die in der Spalte "Name" leer sind
-alle noch verbleibenden zeilen sollen nach dem Alphabet geordnet werden und geordnet in ein Tabellenbaltt geschrieben werden
-das Makro soll in der Zieldatei untergebracht werden
-es sollte den Bereich in den es die Daten schreibt vor dem schreiben löschen um Datenreste zu vermeiden
ich hoffe ich konnte euch mein Probelm verständlich machen...
für eure hilfe wäre ich sehr dankbar!
Grüße
Harry

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten mit Makro selektieren und importieren
16.01.2015 14:19:01
Ralf
Hallo Harry,
kopiere den Code in ein Modul der Zieldatei.
Ralf
Option Explicit
Sub DatenKopieren()
Dim quellBk As Workbook
Dim quellSht As Worksheet
Dim zielBk As Workbook
Dim zielSht As Worksheet
Dim SpalteName As Range
Set zielBk = Workbooks("Mappe1.xlsm") 'anpassen
Set zielSht = zielBk.ActiveSheet 'anpassen
Set quellBk = Workbooks("Mappe2.xlsm") 'anpassen
Set quellSht = quellBk.Worksheets("Tabelle1") ' anpassen
With quellSht
Set SpalteName = .Rows(1).Find("Name", , xlValues, xlWhole)
If SpalteName Is Nothing Then
MsgBox "Spalte mit 'Name' nicht gefunden!"
Exit Sub
End If
.Rows(1).AutoFilter field:=SpalteName.Column, Criteria1:=""
.UsedRange.Sort Key1:=SpalteName, order1:=xlAscending, Header:=xlYes, dataoption1:= _
xlSortNormal
zielSht.Cells.Delete
.UsedRange.Copy zielSht.Cells(1, 1)
End With
'quelldatei ohne zu speichern schließen
'quellBk.Close False
End Sub

Anzeige
AW: Daten mit Makro selektieren und importieren
16.01.2015 14:53:54
Harry
Halo Ralf,
Schon mal vielen vieln Dank für deine Antwort!!! ich bekomme jedoch einen Fehler in der Zeile
Set SpalteName = .Rows(1).Find("Partner-Objektart", , xlValues, xlWhole)
angezeigt. hast du eine Idee woran das liegen könnte?

AW: Daten mit Makro selektieren und importieren
16.01.2015 15:26:03
Ralf
Hallo Harry,
der Text "Partner-Objektart" ist in der Zeile 1 tatsächlich genau so vorhanden?
xlWhole = in der Zelle steht genau das
xlPart = kann auch Teilstring sein
Tipp mal in die Hilfe "range.find"
Welchen Fehler?
Hast du ein bisschen mehr von deinem Code, sonst kann ich nichts dazu sagen.
Ralf

Anzeige
Welchen Fehler bekommst Du denn Harry?
16.01.2015 15:27:42
Matthias
Hallo
Ich habe jetzt mal nur den relevanten Teil den Du beschreibst nachgebaut.
Da kommt bei mir kein Fehler!
Option Explicit
Sub mltest()
Dim quellSht As Worksheet
Dim SpalteName As Range
Set quellSht = ThisWorkbook.Worksheets("Tabelle1") ' anpassen
With quellSht
Set SpalteName = .Rows(1).Find("Partner-Objektart", , xlValues, xlWhole)
If SpalteName Is Nothing Then
MsgBox "Spalte mit 'Name' nicht gefunden!"
Exit Sub
Else
MsgBox SpalteName & vbLf & SpalteName.Address
End If
End With
End Sub

Userbild
Gruß Matthias

Anzeige
AW: Daten mit Makro selektieren und importieren
16.01.2015 15:20:47
Harry
Hallo Ralf,
kannst du mir sagen wie der Code aussehen muss wenn ich die Datei nicht öffnen möchte um die Daten zu importieren. Dein Code funktioniert! meine erste Nachricht war auf einen Fehler von mir zurückzuführen...
Jetzt aber erstmal schönes We.

AW: Daten mit Makro selektieren und importieren
16.01.2015 15:27:18
Ralf
In geschlossenen Dateien, geht m.W.n. kein Filtern und sortieren..
Schönes WE!

AW: Daten mit Makro selektieren und importieren
16.01.2015 15:19:25
fcs
Hallo Harry,
mein Vorschlag mit der Möglichkeit die Quelldatei via Dateidialog auszuwählen.
Gruß
Franz
Sub Daten_Importieren()
Dim varDatei
Dim strQuelle As String
Dim wkbQuelle As Workbook, wksQuelle As Worksheet, bolOpen As Boolean
Dim wksZiel As Worksheet
Dim SpalteName As Long
Dim Zeile_1 As Long, Zeile_L As Long, Zeile_Z As Long
'Wenn Zielblatt aktiv dann
Set wksZiel = ActiveSheet
'Sonst
Set wksZiel = ThisWorkbook.Worksheets("Import") 'Name ggf. anpassen
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
With wksZiel
'Altdaten löschen
Zeile_L = .UsedRange.Row + .UsedRange.Rows.Count - 1
Zeile_1 = 1 'Zeile in die die Spaltentitel kopiert werden sollen
Zeile_Z = Zeile_1
If Zeile_L >= Zeile_1 Then
.Range(.Rows(Zeile_1), .Rows(Zeile_L)).Clear
End If
End With 'wksZiel
'Datei mit Importdaten auswählen
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte Exceldatei mit Importdaten auswählen/öffnen"
If .Show = -1 Then
varDatei = .SelectedItems(1)
'Dateiname ohne Pfad
strQuelle = LCase(Mid(varDatei, InStrRev(varDatei, Application.PathSeparator) + 1))
'Prüfen, ob Datei schon geöffnet
For Each wkbQuelle In Application.Workbooks
If LCase(wkbQuelle.Name) = strQuelle Then
bolOpen = True
Exit For
End If
Next
If wkbQuelle Is Nothing Then
'Quelle schreibgeschützt öffnen
Set wkbQuelle = Application.Workbooks.Open(Filename:=varDatei, ReadOnly:=True)
bolOpen = False
End If
'Importtabelle setzen
Set wksQuelle = wkbQuelle.Sheets(1)
With wksQuelle
'Spalte "Name" suchen in Zeile 1
Zeile_1 = 1 'Zeile mit Spaltentitel
For SpalteName = 1 To .Cells(Zeile_1, .Columns.Count).End(xlToLeft).Column
If .Cells(Zeile_1, SpalteName).Text = "Name" Then
Zeile_L = .UsedRange.Row + .UsedRange.Rows.Count - 1
'Tabelle sortieren
If Zeile_L > Zeile_1 + 1 Then
With .Range(.Rows(Zeile_1), .Rows(Zeile_L))
.Sort Key1:=.Cells(1, SpalteName), order1:=xlAscending, Header:=xlYes
End With
End If
'Letzte belegte Zeile in Spalte mit Namen
Zeile_L = .Cells(.Rows.Count, SpalteName).End(xlUp).Row
'Spaltenbreiten und Zeilen kopieren
With .Range(.Rows(Zeile_1), .Rows(Zeile_L))
.EntireColumn.Copy
wksZiel.Cells(Zeile_Z, 1).PasteSpecial Paste:=xlPasteColumnWidths
.Copy Destination:=wksZiel.Cells(Zeile_Z, 1)
End With
Application.CutCopyMode = False
Exit For
End If
If SpalteName = .Cells(Zeile_1, .Columns.Count).End(xlToLeft).Column Then
MsgBox "Spalte ""Name"" in Quelldatei nicht gefunden"
End If
Next SpalteName
End With 'wksQuelle
Set wksQuelle = Nothing
If bolOpen = False Then wkbQuelle.Close savechanges:=False
End If '.Show = -1
End With 'FileDialog
wksZiel.Activate
Range("A1").Select
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set wkbQuelle = Nothing
Set wksZiel = Nothing
End Sub

Anzeige
AW: Daten mit Makro selektieren und importieren
19.01.2015 09:19:00
Harry
Hallo,
danke für eure schnelle Hilfe!!! Mit einer Kombination aus euren Vorschlägen konnte ich mein Problem lösen.
Das Forum finde ich sehr gut hier wird jede Frage beantwortet und ich werde versuchen auch die ein oder andere Frage zu beantworten...
Vielen Dank
Harry

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige