Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Datei automatisch aus Ordner öffnen und einlesen

Forumthread: VBA Datei automatisch aus Ordner öffnen und einlesen

VBA Datei automatisch aus Ordner öffnen und einlesen
13.11.2024 09:51:56
AxelF1977
Guten Morgen,

ich möchte ein bestehendes VBA dahin abändern, das der Anwender eine Datei nicht mehr auswählt, sondern Excel diese Automatisiert öffnet.

Ich habe eine Änderung in der Datei vornehmen müssen, die es nun ermöglicht, dass ein Ordner in der weiteren Verarbeitung automatisiert angesprochen werden kann.

Soweit funktioniert auch alles, aber Excel will die Datei nicht automatisch verwenden, sondern er muss diese immer noch selber auswählen.

Im VBA sind einige Zellverzeichnisse drin, in diesen stehen entweder der Name des Unterordner oder ein Datum.

Es gibt ein vorgelagertes VBA, welches in Zelle N4 im Tabellenblatt "Beispiel" den Namen des Unterordners zu schreibt. Dieser soll automatisch genutzt werden, und die einzige in dem Ordner liegende Datei automatisch geöffnet werden, ohne das der User diese auswählen muss. Gerne kann es auch so aufgebaut sein, das im Pfad im VBA gar kein Name vorgegeben wird, sondern einfach automatisch die einzige xlsx Datei genutzt wird, welche im Ordner liegt, es wird NIE eine zweite oder mehr im Ordner sein

Was muss ich in diesem Teil ändern, damit es funktioniert?

Dies ist der gesamte Code (mit Platzhaltern und Beispielen da sensible Namen)

Option Explicit



Sub Import_DATEI_Data()

Dim wiMaster As Office.FileDialog
Dim SvName As String
Dim strInput As String
Dim strFile As String
Dim wbRGdata As Workbook, wbMaster As Workbook
Dim wsRateshop As Worksheet, WsMaster As Worksheet
Dim firstline As Double
Dim tbl()
Dim varRegion, pvTab As PivotTable, pvField As PivotField
Dim varMG01

Set wbMaster = ThisWorkbook
Set wiMaster = Application.FileDialog(msoFileDialogFilePicker)
Set WsMaster = wbMaster.Sheets("Import Datei")
varMG01 = ThisWorkbook.Sheets("Beispiel").Range("N4").Value

With wiMaster

.Filters.Clear
.Filters.Add "Excel Files", "*.xlsx?", 1
.Title = "Choose an Excel file"
.AllowMultiSelect = False


.InitialFileName = "C:\Users\" & Environ("Username") & "\Documents\...\" & Format(Now, "yyyy") & "\...\" & Format(Now, "mm") & " " & Format(Now, "mmmm") & " " & Format(Now, "yyyy") & "\" & Format(Now, "dd.mm") & " " & "Lokal" & "\" & varMG01 & "\" & "..." & "\" & "DATEINAME_" & Format(Now, "yyyymmdd") & "*.xlsx"""

If .Show = True Then

strFile = .SelectedItems(1)

Else

Exit Sub

End If

End With

Set wbRGdata = Workbooks.Open(strFile)
Set wsRateshop = ActiveSheet

'copy data
With wsRateshop
tbl = .Range("A1:BZ30000").Value2
End With

'copy on top
With WsMaster
firstline = .Cells(.Rows.Count, 1).End(xlUp).Row + 0
.Cells(firstline, 1).Resize(UBound(tbl), UBound(tbl, 2)) = tbl

End With

'Namen der Datei einfügen
Dim strFileName01 As String
strFileName01 = Format(Now, "dd.mm.yyyy hh:mm")
wbMaster.Sheets("Beispiel").Range("A6").Value = strFileName01

'Namen der Datei einfügen
Dim strFileName02 As String
strFileName02 = Mid(strFile, InStrRev(strFile, "\", , vbTextCompare) + 1)
wbMaster.Sheets("Beispiel").Range("E4").Value = strFileName02

'close import file
wbRGdata.Close (False)


Dim raFund As Range, loLetzte As Long, i As Long
Dim wsZ As Worksheet, wsQ As Worksheet, strSuchbegriff As String
Set wsZ = ThisWorkbook.Worksheets("data Datei")
Set wsQ = ThisWorkbook.Worksheets("Import Datei")
Application.ScreenUpdating = False
With wsZ
'vorhandene Daten im Blatt 2 löschen
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
If loLetzte > 1 Then
.Range(.Cells(2, 1), .Cells(loLetzte, 16)).ClearContents
End If
'Schleife über die Überschriften im Blatt 2
For i = 1 To 16
strSuchbegriff = .Cells(1, i)
'entspr. Überschrift im Blatt 3 suchen
With wsQ
Set raFund = .Rows("1:1").Find(what:=strSuchbegriff, LookIn:=xlValues, lookat:= _
xlWhole)
'wenn gefunden Daten kopieren
If Not raFund Is Nothing Then
loLetzte = .Cells(.Rows.Count, raFund.Column).End(xlUp).Row
.Range(.Cells(2, raFund.Column), .Cells(loLetzte, raFund.Column)).Copy
End If
End With
'im Blatt 2 in die entspr. Spalte einfügen
.Cells(2, i).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Next i
End With
Set wsZ = Nothing: Set wsQ = Nothing


Application.ScreenUpdating = True

Application.ThisWorkbook.RefreshAll


'Worksheets("Import Datei").Delete
Worksheets("Import Datei").Range("A2:NTP100000").ClearContents

MsgBox ("Import data and saving successful")

End Sub


Ich hoffe Ihr könnt mir helfen,.

Vielen Dank
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbooks.Open()
13.11.2024 10:08:57
Fennek
Hallo,

anstelle des File-Dialogs


Set wiMaster = Application.FileDialog(msoFileDialogFilePicker)

Set WsMaster = wbMaster.Sheets("Import Datei")

nur ein

Set wiMaster = Workbooks.Open("Pfad + Filename")

mfg
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige