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