2016-04-15 19 views
1

Ich möchte den Benutzer auffordern, die Rohdatendatei auszuwählen, und Abbrechen, wenn sie im Feld FileDialog auf "Abbrechen" klicken.Laufzeitfehler 424: Objekt erforderlich mit FileDialog.SourceDataFile & fdgOpen.SelectedItems (1)

Aber ich bin immer die Debug-Option und die Fehlermeldung "Runtime 424 Fehler Objekt erforderlich" auf der Linie:

FileDialog.SourceDataFile = fdgOpen.SelectedItems (1)

wie ich bin ganz neu Die ganze Open-a-File-wie-diese Methode, jede Hilfe wird geschätzt werden!

Sub Open file 
    Dim fldr As FileDialog 

    Dim Answer As Integer 
    Dim fdgOpen As FileDialog 
    sPath = Environ("USERPROFILE") & "\Skrivebord\" 
    Set fdgOpen = Application.FileDialog(msoFileDialogOpen) 


    Answer = MsgBox("Continue? ", vbYesNo + vbQuestion, "Update") 
     If Answer = vbNo Then GoTo Nej Else 
       Application.ScreenUpdating = False 
       Application.Calculation = xlCalculationManual 


       fdgOpen.Title = "FileDialogTitle" 
       fdgOpen.InitialFileName = "Select raw data" 
       fdgOpen.Show 

        If fdgOpen.SelectedItems.Count <= 0 Then GoTo Nej Else 
        FileDialog.SourceDataFile = fdgOpen.SelectedItems(1) 

    Nej: MsgBox ("You cancelled") 

End sub 
+0

ich dieses kann prüfen, verwenden, aber warum sind Sie nicht Excel eingebauten 'Application.Getopenfilename' –

+0

BTW was ist 'FileDialog' in' FileDialog.SourceDataFile' –

+0

Ich fand diesen Code, so dass, warum lol erklären könnte. Es funktionierte gestern aus welchem ​​Grund auch immer, ich kann diesen Teil einfach nicht verstehen. Wenn Sie einen besseren Weg haben, um es zu tun, bitte erleuchte mich !! Es wäre sehr hilfreich – Thiil

Antwort

1

Sie erhalten den Object Required Fehler, da der Code nicht versteht, was FileDialog ist in FileDialog.SourceDataFile = fdgOpen.SelectedItems(1)

Hier ist eine viel einfachere Version ist, die die native Excel verwendet Application.GetOpenFilename

das ist, was du bist versuchen?

Sub Openfile() 
    Dim Ret, Ans 

    Ans = MsgBox("Continue? ", vbYesNo + vbQuestion, "Update") 

    If Ans = vbNo Then 
     MsgBox "You cancelled" 
    Else 
     Ret = Application.GetOpenFilename("Raw Data Files (*.*), *.*", , "Select Raw Data") 

     If Ret = False Then 
      MsgBox "You cancelled" 
     Else 
      Application.ScreenUpdating = False 
      Application.Calculation = xlCalculationManual 

      Workbooks.Open Ret 

      Application.ScreenUpdating = True 
      Application.Calculation = xlCalculationAutomatic 
     End If 
    End If 
End Sub 

EDIT

Dies ist, wie Sie o den FileDialog

Sub Openfile() 
    Dim dlgOpen As FileDialog 
    Dim Ans 
    Dim sPath As String 

    Ans = MsgBox("Continue? ", vbYesNo + vbQuestion, "Update") 

    sPath = Environ("USERPROFILE") & "\Skrivebord\" 

    If Ans = vbNo Then 
     MsgBox "You cancelled" 
    Else 
     Set dlgOpen = Application.FileDialog(_ 
     FileDialogType:=msoFileDialogOpen) 

     With dlgOpen 
      .Title = "Select Raw Data" 
      '~~> Add the folder path and file name 
      .InitialFileName = sPath & "Myfile.xlsx" 
      .Show 

      If .SelectedItems.Count > 0 Then 
       Application.ScreenUpdating = False 
       Application.Calculation = xlCalculationManual 

       Workbooks.Open .SelectedItems(1) 

       Application.ScreenUpdating = True 
       Application.Calculation = xlCalculationAutomatic 
      Else 
       MsgBox "You cancelled" 
      End If 
     End With 
    End If 
End Sub 
+1

Das ist genau das, was ich brauchte! Vielen Dank für Ihre schnelle und informative Hilfe! – Thiil

+0

Gibt es eine Möglichkeit, einen Standarddateinamen und -pfad anzugeben? – Thiil

+0

Egal, nicht wichtig! Es funktioniert. Nochmals, Danke für Ihre Hilfe, Siddarth – Thiil