2017-09-05 3 views
1

Ich habe ein Makro, das Daten aus einer CSV-Datei in meine Excel-Datei kopiert und funktioniert gut, wenn der Dateiname jedes Mal gleich ist. Hier liegt das Problem: Es ist nicht immer derselbe Name.Excel vba Benutzer Arbeitsmappe auswählen und dann Daten kopieren

Ich brauche das Skript, damit ein Benutzer die CSV-Datei auswählen kann. Dann der Code, um es zu kopieren. Das ist, was ich habe:

Sub importmix() 

    Worksheets("mixdata").Range("A1:P300").Clear 

    '## Open workbooks first: 
    Set X = Workbooks.Open("C:\test\mix.csv") 
    '## Set values between workbooks 
    Workbooks("2.xlsm").Worksheets("mixdata").Range("A1:K300").Value = _ 
     Workbooks("mix.csv").Worksheets("mix").Range("C1:M300").Value 

    '##Close x: 
    X.Close False 
End Sub 

Antwort

1

Ich glaube, Sie suchen nach etwas wie folgt aus:

Sub test() 
    Dim intResult As Integer 
    Dim fD As FileDialog 

    Set fD = Application.FileDialog(msoFileDialogFilePicker) 

    With fD 
     .Title = "Select a Path" 
     .AllowMultiSelect = False 
     .Show 
    End With 

    importmix fD.SelectedItems(1) 

End Sub 

Sub importmix(path As String) 

    Worksheets("mixdata").Range("A1:P300").Clear 

    '## Open workbooks first: 
    Set X = Workbooks.Open(path) 
    '## Set values between workbooks 
    Workbooks("2.xlsm").Worksheets("mixdata").Range("A1:K300").Value = _ 
     Workbooks(Dir(path)).Worksheets(Dir(Replace(UCase(path), ".csv", ""))).Range("C1:M300").Value 

    '##Close x: 
    X.Close False 

End Sub 

Dir(path) gibt Ihnen den Dateinamen. Ein CSV öffnet automatisch ein Blatt mit dem Namen der Datei ohne die Erweiterung, so dass das Entfernen der .csv das erledigt.

+0

funktioniert wie ein Charme vielen Dank – darka

+0

@ user2754055 Sie sind herzlich willkommen :-) – GibralterTop

0

zu verwenden, sollten in der Lage:

Dim intResult as integer 
'Dialogue box name 
Application.FileDialog(msoFileDialogFolderPicker).Title = "Select a Path" 
'The dialog is displayed to the user 
intResult = Application.FileDialog(msoFileDialogFolderPicker).Show 
Verwandte Themen