0
ファイルを検索して見つからないものを選択するようにVBAで関数を使用しています。VBA Excel FileDialogはオブジェクトとして選択項目を返します
私はファイル.selecteditem(1)
が文字列として戻っているが、私は理想的には、オブジェクトとして返す必要を選択しapplication.filedialog
filepicker
を使用しています。
これを変換する方法はありますか、それとも最初から間違っているのでしょうか?
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
を使用するために必要な? – YowE3K
「オブジェクト」はどのように返されますか?このオブジェクトはfilettypeと異なります。別のExcelファイルを開く必要がある場合は、[Workbooks.Open Method](https://msdn.microsoft.com/en-us/library/office/ff194819.aspx)をダイアログから取得したファイル名と一緒に使用します。 –
@ YowE3K申し訳ありませんが、私は言っていたはずです。これはファイルオブジェクトです。 – Boon101083