Verzeichnis per Auswahlfeld in anderes Makro einfü

Hallo Forumgemeinde,

ich habe folgendes Problem, wo ich leider nicht weiter komme und hoffe, hier eine Hilfestellung zu bekommen:

Ich habe eine Liste, wo der Inhalt aller Exceldateien aus einem Ordner importiert werden soll.
Dafür habe ich ein Makro, welches auch funktioniert:

Private Sub CommandButton1_Click()
Dim fs, f, f1, fc, s
Set fs = CreateObject(„Scripting.FileSystemObject“)
Set f = fs.GetFolder(„C:\Sammelordner“) 'Zielverzeichnis
Set fc = f.Files

Dim a, b

a = 7 'Anfangszeile der Zieldatei

For Each f1 In fc

Workbooks.Open „C:\Sammelordner“ & f1.Name 'alle Dateien aus Zielverzeichnis

Dim Ziel, Quelle As Worksheet

Set Ziel = Workbooks.Item(1).Worksheets(1)
Set Quelle = Workbooks.Item(2).Worksheets(1)

b = 0 'Anfangszeile der Quelldatei

While Quelle.Cells(b + 7, 3) „“

Ziel.Cells(a, 6) = Quelle.Cells(b + 7, 3)
Ziel.Cells(a, 7) = Quelle.Cells(2, 8)
Ziel.Cells(a, 8) = Quelle.Cells(b + 7, 4)
Ziel.Cells(a, 9) = Quelle.Cells(b + 7, 5)
Ziel.Cells(a, 10) = Quelle.Cells(b + 7, 6)
Ziel.Cells(a, 11) = Quelle.Cells(b + 7, 7)
Ziel.Cells(a, 12) = Quelle.Cells(b + 7, 8)
Ziel.Cells(a, 13) = Quelle.Cells(b + 7, 9)
Ziel.Cells(a, 14) = Quelle.Cells(b + 7, 10)
Ziel.Cells(a, 15) = Quelle.Cells(b + 7, 11)
Ziel.Cells(a, 16) = Quelle.Cells(b + 7, 12)
b = b + 1
a = a + 1

Wend

Set Ziel = Nothing
Set Quelle = Nothing

Workbooks.Item(2).Close (False)

Next
End Sub

Nun möchte ich zusätzlich, dass der zu importierende Ordner per Auswahlfeld gewählt werden kann.

Dafür habe ich dieses Makro:
Public Sub Ordnerauswahl()
Dim strOrdner As String
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = „C:“
.Title = „Ordnerauswahl“
.ButtonName = „Auswahl…“
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1) „“ Then strOrdner = strOrdner & „“
Else
strOrdner = „“
End If
End With
If strOrdner = „“ Then MsgBox („Kein Ordner gewählt!“) Else MsgBox strOrdner
End Sub

Wie kann ich diese beiden Makros zusammen verwenden,sodass per Auswahlfeld das Verzeichnis gewählt wird und dann in die „fs.GetFolder“ bzw. „Workbooks.Open“ eingetragen wird?

Leider bin ich mit den Makros nicht sehr vertraut, daher bitte ich um Entschuldigung für die etwas komplizierte Fragestellung

Viele Grüße
Daniel

adaptierter Code:
'WICHTIG: diese Dimensionierung erfolgt unbedingt im Bereich: (Allgemein) (Deklarationen)
'dadurch sind dies Variablen über das ganze Modul gültig
(Allgemein) (Deklaration)
Dim fs, f, f1, fc, s
Dim strOrdner As String
Dim a, b
Dim ANTWORT, AUSWAHL

Sub CommandButton1_Click()

Call Ordnerauswahl

If ANTWORT 1 Then Exit Sub
If strOrdner = „“ Then Exit Sub

Set fs = CreateObject(„Scripting.FileSystemObject“)
Set f = fs.GetFolder(strOrdner) 'Zielverzeichnis
Set fc = f.Files

a = 7 'Anfangszeile der Zieldatei

For Each f1 In fc

Workbooks.Open strOrdner & f1.Name 'alle Dateien aus Zielverzeichnis

Dim Ziel, Quelle As Worksheet

Set Ziel = Workbooks.Item(1).Worksheets(1)
Set Quelle = Workbooks.Item(2).Worksheets(1)

b = 0 'Anfangszeile der Quelldatei

While Quelle.Cells(b + 7, 3) „“

Ziel.Cells(a, 6) = Quelle.Cells(b + 7, 3)
Ziel.Cells(a, 7) = Quelle.Cells(2, 8)
Ziel.Cells(a, 8) = Quelle.Cells(b + 7, 4)
Ziel.Cells(a, 9) = Quelle.Cells(b + 7, 5)
Ziel.Cells(a, 10) = Quelle.Cells(b + 7, 6)
Ziel.Cells(a, 11) = Quelle.Cells(b + 7, 7)
Ziel.Cells(a, 12) = Quelle.Cells(b + 7, 8)
Ziel.Cells(a, 13) = Quelle.Cells(b + 7, 9)
Ziel.Cells(a, 14) = Quelle.Cells(b + 7, 10)
Ziel.Cells(a, 15) = Quelle.Cells(b + 7, 11)
Ziel.Cells(a, 16) = Quelle.Cells(b + 7, 12)
b = b + 1
a = a + 1

Wend

Set Ziel = Nothing
Set Quelle = Nothing

Workbooks.Item(2).Close (False)
Next
Stop
End Sub
Sub Ordnerauswahl()

With Application.FileDialog(msoFileDialogFolderPicker)
InitialFileName = „C:“
Title = „Ordnerauswahl“
ButtonName = „Auswahl…“
InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1) „“ Then strOrdner = strOrdner & „“
Else
strOrdner = „“
End If
End With
AUSWAHL = vbYes + vbCancel
If strOrdner = „“ Then ANTWORT = MsgBox(„Kein Ordner gewählt!“, vbOKCancel) Else ANTWORT = MsgBox(strOrdner, vbOKCancel)

End Sub

uns ausssssss…

Perfekt. Funktioniert einwandfrei. Vielen Dank für deine Hilfe :wink:

Viele Grüße
Daniel

Hallo, leider bin ich auch nicht so fit in Makros, kann deshalb nicht helfen.

Hallo Daniel,

hier eine gute Erklärung der Variablen Übergabe:
http://www.online-excel.de/excel/singsel_vba.php?f=5

Ich hoffe dies hilft dir.

Gruß

Christian