Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1476to1480
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

In stammdatei quelldateien einlesen per VBA

In stammdatei quelldateien einlesen per VBA
17.02.2016 17:42:03
Michael
Hallo,
ich bräuchte eine Hilfe beim Einlesen von Daten aus anderen Exceltabellen.
Dabei soll per Button eine Datei ausgewählt werden können danach werden die Daten aus den Quelledateien in die Stammdatei geladen.
Quelldatei
https://www.herber.de/bbs/user/103645.xlsx
Stammdatei
https://www.herber.de/bbs/user/103646.xlsx
Kann man so etwas realisieren? Wenn ja wie?

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In stammdatei quelldateien einlesen per VBA
17.02.2016 19:34:45
Michael
Hallo Michael,
das klingt eher nach einem Programmierauftrag als nach einer Forumsanfrage...
Deshalb beschränkt sich meine Antwort auf das (unvollständige) Kernstück von dat Janze, das Außenrum und ein paar Verfeinerungen kannst Du wahrscheinlich mit ein bißchen Recherche selbst lösen.
Das Makro ...
Option Explicit
Sub ImportAufrufen()
Call DateiImportieren(ActiveWorkbook.Path & "\", Sheets("Import").Range("B1").Value)
End Sub
Sub DateiImportieren(pfad As String, datei As String)
Dim dieses As Workbook, dasandere As Workbook
Dim dies As Worksheet, das As Worksheet
Dim z&, zmax&, dasmax&, i&
Dim a As Variant, ueberschrift As Variant
Dim c As Range
Dim ok As Boolean
Set dieses = ActiveWorkbook
Set dies = Sheets("Import")
ueberschrift = dies.Range("D4:W4")
zmax = dies.Range("A" & dies.Rows.Count).End(xlUp).Row
z = zmax + 1
Workbooks.Open Filename:=pfad & datei
Set dasandere = ActiveWorkbook
For Each das In dasandere.Worksheets
dasmax = das.Range("B" & das.Rows.Count).End(xlUp).Row ' wegen "die ersten 4 Spalten"
Set c = das.Range("A1").Resize(dasmax, 1).Find("pos")
If Not c Is Nothing Then
ok = True
For i = 1 To UBound(ueberschrift, 2)
If das.Cells(c.Row, i).Value  ueberschrift(1, i) Then ok = False: Exit For
Next
If ok Then
MsgBox "gefunden"
das.Range("A" & c.Row + 1 & ":T" & dasmax).Copy dies.Range("D" & z)
dies.Range("A" & z).Resize(dasmax - c.Row).Value = das.Range("G8")
z = z + dasmax - c.Row
End If
End If
Next
dasandere.Close savechanges:=False
End Sub
besteht aus dem "Kern" Sub DateiImportieren, den Du wie auch immer aufrufen kannst, er möchte nur den Pfad und den Dateinamen und setzt voraus, daß die zu importierende Datei geschlossen ist - Anpassung evtl. siehe hier:
https://www.herber.de/mailing/Pruefen_ob_Arbeitsmappe_geoeffnet_und_wenn_nein_oeffnen.htm
Die Sub ImportAufrufen() holt sich diese Angaben für den Moment aus der Zelle B1.
Hier ist der Ansatzpunkt für die gewünschte "Dateiauswahl". Ob Du in einer Tabelle einige Dateinamen hast und die in einer Schleife durchläufst, oder ob Du das über ein Auswahlfenster machen möchtest, kannst Du Dir ja überlegen und ggf. recherchieren, z.B. bei https://www.herber.de/xlfaq/index.html#Datei
Die beiden Datein https://www.herber.de/bbs/user/103652.zip
sind gezipt, damit sie ohne Namensanpassung lauffähig sind - das Makro erwartet beide im gleichen Ordner.
Schöne Grüße,
Michael
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige