Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
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

Datenimport aus externen Excel Mappen

Datenimport aus externen Excel Mappen
09.02.2018 11:12:10
Okan
Guten Tag,
ich habe hier ein Makro, welches beim öffnen der Tabelle LV_210621 ausgeführt wird. Dies funktioniert sehr gut.
Nur habe ich mehrere Tabellen und ich möchte, dass alle Makros ImportData..., beim Starten der Arbeitsmappe ausgeführt werden.
Hier das Makro:
Public Sub ImportData_LV_210621()
Dim objFileSearch As clsFileSearch
Dim lngIndex As Long, lngCount As Long
Dim varOutput As Variant
Dim strPath As String, strFormula As String
Const cstrTabname As String = "Report" 'Tabellenname
If Range("C7") = "" Or Range("C8") = "" Then
MsgBox ("Bitte Cellen C7 & C8 mit Daten füllen.")
Else
strPath = _
"I:\Versuch_Okan\Analyse\" & Cells(7, 3).Value & "\" & Cells(8, 3).Value & "\"  ' _
Startverzeichnis
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
With LV_210621
.Range("B17:C36").ClearContents
Set objFileSearch = New clsFileSearch
With objFileSearch
.NewSearch = True
.CaseSenstiv = False
.Extension = "*.xlsx*"
.FolderPath = strPath
.SearchLike = "*Analyse_LV_210621_*"
.SubFolders = False
If .Execute(Sort_by_Date_Create, Sort_Order_Descending) > 0 Then
ReDim varOutput(1 To 20, 1 To 10)
lngCount = 1
For lngIndex = 1 To .FileCount
If lngCount > 20 Then Exit For
strFormula = "='" & .Files(lngIndex).FI_FolderPath
strFormula = strFormula & "[" & .Files(lngIndex).FI_FileName & "]"
strFormula = strFormula & cstrTabname & "'!"
varOutput(lngCount, 1) = strFormula & "U50"
varOutput(lngCount, 2) = strFormula & "I19"
varOutput(lngCount, 3) = strFormula & "I20"
varOutput(lngCount, 4) = strFormula & "I21"
varOutput(lngCount, 5) = strFormula & "I22"
varOutput(lngCount, 6) = strFormula & "I23"
varOutput(lngCount, 7) = strFormula & "I24"
varOutput(lngCount, 8) = strFormula & "I25"
varOutput(lngCount, 9) = strFormula & "I26"
varOutput(lngCount, 10) = strFormula & "U46"
lngCount = lngCount + 1
Next
End If
End With
With .Range("B17").Resize(UBound(varOutput, 1), 10)
.Formula = varOutput
.Value = .Value
End With
End With
Set objFileSearch = Nothing
End If
End Sub

Ich befürchte, dass das Problem in diesem Teil des Makros liegt:
With .Range("B17").Resize(UBound(varOutput, 1), 10)
.Formula = varOutput
.Value = .Value
End With
Das Prüfen ob Zelle C7 & C8 befüllt sind, will ich in der Tabelle ausführen lassen, wo auch die Daten eingefügt werden sollen.
Für das Aufrufen der Makros habe ich diesen Makro:
Private Sub Workbook_Open()
Call ImportData_LV_210621
End Sub
Ich bedanke mich im Voraus.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport aus externen Excel Mappen
09.02.2018 12:38:48
Rudi
Hallo,
teste mal:
Public Sub ImportData(wks As Worksheet)
Dim objFileSearch As clsFileSearch
Dim lngIndex As Long, lngCount As Long
Dim varOutput As Variant
Dim strPath As String, strFormula As String
Const cstrTabname As String = "Report" 'Tabellenname
With wks
If .Range("C7") = "" Or .Range("C8") = "" Then
MsgBox ("Bitte Cellen C7 & C8 mit Daten füllen.")
Else
strPath = _
"I:\Versuch_Okan\Analyse\" & .Cells(7, 3).Value & "\" & .Cells(8, 3).Value & "\"  ' _
Startverzeichnis
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
.Range("B17:C36").ClearContents
Set objFileSearch = New clsFileSearch
With objFileSearch
.NewSearch = True
.CaseSenstiv = False
.Extension = "*.xlsx*"
.FolderPath = strPath
.SearchLike = "*Analyse_" & wks.Name & "_*"
.SubFolders = False
If .Execute(Sort_by_Date_Create, Sort_Order_Descending) > 0 Then
ReDim varOutput(1 To 20, 1 To 10)
lngCount = 1
For lngIndex = 1 To .FileCount
If lngCount > 20 Then Exit For
strFormula = "='" & .Files(lngIndex).FI_FolderPath
strFormula = strFormula & "[" & .Files(lngIndex).FI_FileName & "]"
strFormula = strFormula & cstrTabname & "'!"
varOutput(lngCount, 1) = strFormula & "U50"
varOutput(lngCount, 2) = strFormula & "I19"
varOutput(lngCount, 3) = strFormula & "I20"
varOutput(lngCount, 4) = strFormula & "I21"
varOutput(lngCount, 5) = strFormula & "I22"
varOutput(lngCount, 6) = strFormula & "I23"
varOutput(lngCount, 7) = strFormula & "I24"
varOutput(lngCount, 8) = strFormula & "I25"
varOutput(lngCount, 9) = strFormula & "I26"
varOutput(lngCount, 10) = strFormula & "U46"
lngCount = lngCount + 1
Next
End If
End With
With .Range("B17").Resize(UBound(varOutput, 1), 10)
.Formula = varOutput
.Value = .Value
End With
End With
Set objFileSearch = Nothing
End If
End Sub

Aufruf:
Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In Worksheets
Call ImportData(wks)
Next
End Sub

Gruß
Rudi
Anzeige
AW: Datenimport aus externen Excel Mappen
09.02.2018 12:51:03
Okan
Hi Rudi,
zunächst einmal danke für die schnelle Antwort.
jedoch kommt folgende Meldung beim Starten der Arbeitsmappe:
Variable oder Prozedur anstelle eines Moduls erwartet.
VG
Okan
AW: Datenimport aus externen Excel Mappen
09.02.2018 12:55:03
Okan
Hi Rudi,
was mir noch eingefallen ist. Das Makro soll nicht in jedem Tabellenblatt ausgeführt werden.
VG
Okan
AW: Datenimport aus externen Excel Mappen
09.02.2018 13:05:40
Rudi
Hallo,
1. Benenne das Modul oder die Prozedur um.
2.
Private Sub Workbook_Open()
Call ImportData(Sheets("abc"))
Call ImportData(Sheets("def"))
'etc.
End Sub
Gruß
Rudi
AW: Datenimport aus externen Excel Mappen
09.02.2018 13:32:49
Okan
Hi Rudi,
jetzt kommt eine fehlermeldung beim Kompilieren:
End With ohne With
VG
Okan
Anzeige
AW: Datenimport aus externen Excel Mappen
09.02.2018 13:58:51
Okan
Hi Rudi,
hab das Problem lösen können.
Das End With stand an falscher stelle.
Funktioniert jetzt so wie gewünscht.
Danke für deine Hilfe.
Vg
Okan
AW: Datenimport aus externen Excel Mappen
09.02.2018 14:18:42
Okan
Hi Rudi,
bei dem Makro wird nun ein fehler angezeigt.
Private Sub Workbook_Open()
Call ImportData(Sheets("abc"))
Call ImportData(Sheets("def"))
'etc.
End Sub
Sobals ich die zweite Tabelle einfüge steht bei
With .Range("B17").Resize(UBound(varOutput, 1), 10)
Typen unverträglich.
VG
Okan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige