AW: Datei aus einem bestimmten Verzeichniss wählen
23.02.2009 14:43:57
Matthias
Hi Edward,
am einfachsten geht das in zwei Schritten.
Das erste macro kopierst Du in den Code eines Commandbuttons. Dazu fügst Du auf Dein Arbeitsblatt einen Commandbutton ein. Durch rechtsclick auf den Commandbutton (geht nur im "Design-modus"), kannst Du auf Codeansicht (heisst vielleicht auf Deutsch ein bisschen anders). Dort fügst Du folgenden Code ein:
Private Sub CommandButton1_Click()
Dim fd As FileDialog, lngRet As Long
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.InitialFileName = folderpath
fd.Filters.Add "Import File", "*.xls", 1
fd.FilterIndex = 1
fd.AllowMultiSelect = False
lngRet = fd.Show
If lngRet Then
ActiveSheet.Range("b10") = fd.SelectedItems(1)
End If
End Sub
Die erste und letzte Zeile sollten so oder so ähnlich bereits da stehen.
Das Macro öffnet den Filedialog und schreibt das Ergebnis in die Zelle B10
Anschließend fügst Du ein neues Modul im VBA editor ein. Und pastet dorthinein fiolgenden Code:
Public Sub copy_data()
Dim lastupdate As String
Dim Sapfilename_i As String
Dim sapfilename_m As String
sapfilename_m = ActiveWorkbook.Name
Sheets("Sheet2").Cells.Clear
Sapfilename = Sheets("Sheet1").Range("b10")
Workbooks.OpenText Filename:=Sapfilename
lastupdate = FileDateTime(Sapfilename)
Cells.Copy
Application.DisplayAlerts = False
Sapfilename_i = ActiveWorkbook.Name
Workbooks(sapfilename_m).Activate
Sheets("Sheet2").Activate
ActiveSheet.Paste
Workbooks(Sapfilename_i).Close
Sheets("Sheet1").Activate
Sheets("Sheet1").Range("b11") = lastupdate
Application.DisplayAlerts = True
End Sub
Dieser Code kopiert die Daten aus der der Datei die in Zelle B10 des Sheet1 genannt ist (musst Du gegebenenfalls anpassen) , in das sheet 2. Ausserdem schreibt Dir das Macro in duie Zelle B11 das letzte Änderungsdatum der importierten Datei.
Das zweite Macro kannst Du natürlich auch per commandbutton starten. Dazu schreibst Du bei einem zweiten Commandbutton in den Code:
Private Sub CommandButton2_Click()
copy_data
End Sub
Rückmeldung wäre nett.
Der Vollständigkeithalber sei erwähnt, dass ich mir einige Teile dieses macros schon vor einiger zeit aus dem internet zusammengeklaut hatte (Herber.de sei Dank!!)) - und das es sicherlich auch eleganter geht (mein VBA-level ist nicht gerade hoch :-) )
Grüße
MatthiasP