2016-04-15 16 views
1

の生データファイルを選択するように要求し、FileDialogボックスで「キャンセル」をクリックすると中断します。ランタイムエラー424:FileDialog.SourceDataFile&fdgOpen.SelectedItems(1)

しかし、私はデバッグオプションとラインの「必要なランタイムエラー424オブジェクト」のエラーメッセージを取得しています:

FileDialog.SourceDataFile = fdgOpen.SelectedItems(1)

iはかなり新しいですと全体のオープンファイル形式のように、この方法は、任意のヘルプが評価されます!

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

を使用してoを私はこれを確認することができますが、なぜあなたは何ところで、Excelの組み込みの 'Application.Getopenfilename' –

+0

を使用していない方法です'FileDialog.SourceDataFile'の' FileDialog'です –

+0

私はこのコードを見つけました。それは何らかの理由で昨日働いた、私はこの部分の周りに私の頭を得ることができません。 もっと良い方法があれば教えてください!それは最も役に立つでしょう – Thiil

答えて

1

あなたのコードがFileDialogがここFileDialog.SourceDataFile = fdgOpen.SelectedItems(1)

であるか理解していないので、あなたがObject Requiredエラーを取得しているが、ネイティブExcelのApplication.GetOpenFilename

を使用してはるかに単純なバージョンであるあなたが何であるか、このです試して?

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

これは、あなたがそれを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

これはまさに私が必要なものです!あなたの迅速で有益な助けをありがとう! – Thiil

+0

これでデフォルトのファイル名とパスを指定する方法はありますか? – Thiil

+0

大事なことではありません。それは働いている。再度、あなたの助けをありがとう、Siddarth – Thiil

関連する問題