如何检查MultiSelect的GetOpenFilename是否被取消?
带有MultiSelect := True
GetOpenFilename
MultiSelect := True
如果对话被取消,则返回一个Variant或Boolean False
的数组。 我怎样才能做一个体面的检查? 如果我检查返回值与False
,我得到一个types不匹配的错误,当文件被选中(即对话框没有取消),因为显然我不能检查一个Variant()
是否为False
。
我现在检查“布尔”types,它的工作。 但是我写这个代码让我觉得很肮脏。 有一个体面的方式吗?
Dim files As Variant files = Application.GetOpenFilename("Alle-Dateien (*.*),*.*,", , "please choose files", "open", MultiSelect:=True) If TypeName(files) = "Boolean" Then MsgBox "Nothing selected" Exit Sub End If
正如在评论中提到的,我喜欢使用FileDialog(msoFileDialogOpen)
(以及其对应的文件夹,msoFileDialogFolderPicker)。 它的行为比GetOpenFileName所遇到的要干净得多。 有时我想知道为什么这两个对话框都存在:
Private Sub PickSomeFiles() Dim fdFileDialog As FileDialog Dim SelectedItemsCount As Long Dim i As Long Set fdFileDialog = Application.FileDialog(msoFileDialogOpen) With fdFileDialog .Filters.Clear .Filters.Add "Alle-Dateien (*.*),*.*", "*.*" .FilterIndex = 1 .InitialView = msoFileDialogViewDetails .Title = "please choose files" .ButtonName = "open" .AllowMultiSelect = True .Show If .SelectedItems.Count = 0 Then MsgBox "No files selected" Exit Sub End If SelectedItemsCount = .SelectedItems.Count For i = 1 To SelectedItemsCount MsgBox "You selected: " & .SelectedItems(i) Next i End With End Sub
由于低代表无法评论,但想补充说,我在我写的程序中有相同的情况,并经过大量的研究后,我最终得到了与您至less为您的代码基本相同的确切代码情况看起来你是对的。
假= 0.检查文件= 0应该帮助…