Ich verwende eine Funktion in VBA für Excel, um nach einer Datei zu suchen und den Benutzer zur Auswahl von nicht gefunden zu bitten.VBA Excel FileDialog Rückgabe selecteditem als Objekt
Wenn ich die application.filedialog
filepicker
die Datei auszuwählen, die .selecteditem(1)
wird als String zurückkehrt, aber ich muss im Idealfall als Objekt zurück.
Gibt es eine Möglichkeit, dies zu konvertieren oder gehe ich von Anfang an falsch?
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
Welche Art von Objekt wollen Sie den Namen der Datei zu konvertiert werden? – YowE3K
Welches "Objekt" soll es zurückgeben? Dieses Objekt würde sich mit dem Dateityp unterscheiden. Wenn Sie eine andere Excel-Datei öffnen müssen, verwenden Sie die [Workbooks.Open-Methode] (https://msdn.microsoft.com/en-us/library/office/ff194819.aspx) mit dem Dateinamen, den Sie aus dem Dialogfeld erhalten haben. –
@ YowE3K Entschuldigung, hätte ich sagen sollen. Es ist ein Dateiobjekt. – Boon101083