Ich hab mir den Code etwas zusammen geschustert und mit eignem Wissen erweitert.
Er funktioniert soweit auch, aber bei der Abfrage des Blattes, muss die Eingabe doppelt getätigt werden. Wieso?
Und gibt es eine bessere Variante 2 Bereiche aus 2 verschiedenen Blättern aus 1 Datei zu ziehen?
Ich bin für jeden Input dankbar. :)
Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
Dim strQuelle As String
Dim Zeilen As Long
Dim Spalten As Byte
' On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
'.Value2 = .Value2
End With
GetDataClosedWB = True
Exit Function
' InvalidInput = MsgBox("Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, " _
_
Get data from closed Workbook")
GetDataClosedWB = False
End Function
Public Sub HoleDaten()
' Holt Daten aus der obrigen GetDataClosedWB
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Bereich As String
Dim Ziel As Range
Dim oWs As Worksheet
Dim anz As String
' With Application.FileDialog(msoFileDialogFilePicker)
' .Title = "Choose source folder"
' .ButtonName = "Start import"
' If .Show -1 Then Exit Sub
' Pfad = .SelectedItems(1)
' End With
' Delivery Reiter wird abgefragt
Pfad = "C:\.."
Dateiname = "Test.xls" ' aus welcher Datei soll er holen?
Blatt = "Delivery" ' von welcher Tabelle soll er holen?
Bereich = "AN14:AQ101" ' aus welchem Bereich soll er holen?
Set Ziel = Worksheets("Daten_ALL_1").Range("A2") ' in welchen Bereich soll er kopieren? _
_
Genauer gesagt: Bei welcher Zelle soll er anfangen, Datein reinzukopieren?
' Set Ziel = ActiveSheet.Cells(Range("A1").End(xlDown).Row + 1, 1).Select
' Set Ziel = anz
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten SWFL importiert" ' MsgBox wenn SWFL Daten erfolgreich _
importiert wurden
End If
' Logistic Reiter wird abgefragt
Blatt = "Logistic"
Bereich = "B12:F16"
Set Ziel = Worksheets("Daten_ALL_1").Range("H2")
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten SGBM importiert" ' MsgBox wenn SGBM Daten erfolgreich _
importiert wurden
End If
' Aufruf von Hilfsfunktionen zur Löschung und Formatierung der Spalten
Call Leerzeilen_loeschen
Call Formatierung_SWFL
Call Formatierung_SGBM
' Wahl des Feldes welches nach der Ausfürhung angewählt wird
Range("F2").Select
End Sub