2017-05-04 9 views
0

ファイルを検索して見つからないものを選択するようにVBAで関数を使用しています。VBA Excel FileDialogはオブジェクトとして選択項目を返します

私はファイル.selecteditem(1)が文字列として戻っているが、私は理想的には、オブジェクトとして返す必要を選択しapplication.filedialogfilepickerを使用しています。

これを変換する方法はありますか、それとも最初から間違っているのでしょうか?

Public myDir As String 
Public newFilePath As String 
Public FileSys As Object 
Public myFolder 

    Function LoadFileName(FileStart As String, FileType As String) 
    newFilePath = ActiveWorkbook.Path 
    myDir = newFilePath & "\Daily reports" 
    ChDrive (Left(ActiveWorkbook.Path, 2)) 
    ChDir myDir 
    Set FileSys = CreateObject("Scripting.FileSystemObject") 
    Set myFolder = FileSys.GetFolder(myDir)   


    On Error GoTo FileNotFound 

    Dim dteFile As Date 
    Dim oFS As Object 
    Dim objFile As Object 
    Dim FileName As Object 
    Dim strFileToOpen As Office.FileDialog 

    dteFile = DateSerial(1900, 1, 1) 

    Set FileSys = CreateObject("Scripting.FileSysetmObject") 

    For Each objFile In myFolder.Files 
     If FileSys.GetFile(objFile).DateCreated >= dteFile And UCase(Left(objFile.Name, 3)) = FileStart Then 
     dteFile = FileSys.GetFile(objFile).DateCreated 
     Set FileName = objFile 
     End If 
    Next 

FileFound: 
    fileConfirm = MsgBox("Is " & FileName.Name & " the report you wish to use?", vbYesNoCancel + vbQuestion) 
    If fileConfirm = vbCancel Then 
    End 
    ElseIf fileConfirm = vbNo Then 
    GoTo SelectFile 
    ElseIf fileConfirm = vbYes Then 
    Set LoadFileName = FileName 
    Exit Function 
    End If 

FileNotFound: 
    MsgBox "Unable to find most recent report." & vbCrLf & _ 
      "Please select the file you wish to use.", vbInformation + vbOKOnly 
SelectFile: 
    Set strFileToOpen = Application.FileDialog(msoFileDialogFilePicker) 
    With strFileToOpen 
    .AllowMultiSelect = False 
    .Title = "Pleas select report to use." 
    .Filters.Clear 
    .Filters.Add "Excel", "*." & FileType & "*" 
    End With 

    If strFileToOpen.Show = -1 Then 
    FileName = strFileToOpen.SelectedItems(1) 
    GoTo FileFound 
    Else 
    forceBreak = MsgBox("No file has been selected. Would you like to try again?", vbExclamation + vbYesNo) 
     If forceBreak = vbNo Then 
     MsgBox "The CQUIN daily patient list cannot be generated without both EPIC and CHEQS reports." & _ 
       "Please ensure these have been run and saved in the correct locations.", vbCritical 
     End 
     Else 
     GoTo SelectFile 
     End If 

    End If 


    End Function 
+0

を使用するために必要な? – YowE3K

+0

「オブジェクト」はどのように返されますか?このオブジェクトはfilettypeと異なります。別のExcelファイルを開く必要がある場合は、[Workbooks.Open Method](https://msdn.microsoft.com/en-us/library/office/ff194819.aspx)をダイアログから取得したファイル名と一緒に使用します。 –

+0

@ YowE3K申し訳ありませんが、私は言っていたはずです。これはファイルオブジェクトです。 – Boon101083

答えて

0

私は最後に解決策を見つけることができました。それをしたい人のために、これは私が欠けていたものです。

私はちょうどあなたが、ファイルの名前はに変換したいんオブジェクトのどのような.GetFile ...

If strFileToOpen.Show = -1 Then 
    Set FileName = FileSys.GetFile(strFileToOpen.SelectedItems(1)) 
    GoTo FileFound 
    Else 
関連する問題