VBA使用AHTCommonOpenFilesSave和ahtOFN\u ALLOWMULTISELECT,选择单个文件时出错
也许我忽略了显而易见的结果,但我不知道如何处理数组中的单个结果 我在VBA中使用以下代码启用选择多个文件VBA使用AHTCommonOpenFilesSave和ahtOFN\u ALLOWMULTISELECT,选择单个文件时出错,vba,ms-access,Vba,Ms Access,也许我忽略了显而易见的结果,但我不知道如何处理数组中的单个结果 我在VBA中使用以下代码启用选择多个文件 Private Sub btn_openfiles_Click() Dim strFilter As String Dim strInputFileName As String Dim strFiles() As String Dim a As Long strFilter = ahtAddFilterItem(strFilter, "Images
Private Sub btn_openfiles_Click()
Dim strFilter As String
Dim strInputFileName As String
Dim strFiles() As String
Dim a As Long
strFilter = ahtAddFilterItem(strFilter, "Images (*.PNG)", "*.PNG")
strFiles = ahtCommonFileOpenSave( _
Filter:=strFilter, _
OpenFile:=True, _
InitialDir:="T:\DTP\Programs\Default\", _
DialogTitle:="Please select an input file...", _
Flags:=ahtOFN_EXPLORER + ahtOFN_ALLOWMULTISELECT)
If IsArray(strFiles) Then
For a = 0 To UBound(strFiles)
Me.test_filenames = Me.test_filenames & strFiles(a) & vbCrLf
Next a
Else
Me.test_filenames = strFiles
End If
End Sub
我知道结果是一个数组,因为我正在设置ahtOFN\u ALLOWMULTISELECT标志。当选择多个文件时,这会很顺利。但如果只选择了一个文件,则
抛出错误13(strfile上的类型不匹配)
因为ahtCommonFileOpenSave的返回值不是数组。
我可以通过向ahtCommonFileOpenSave生成的数组添加一个伪值来强制使用数组类型,并在处理表单中的文件名时忽略这一点,但也许有更好的解决方案。有人有什么建议吗?正如我已经提到的,忽略了显而易见的问题。将变量类型更改为variant成功了。当选择多个文件时,ahtComminFileOpenSave将返回完整的数组,并且始终为变量类型。Luuk的建议也有效(当变量类型被省略时,默认情况下会使用变量类型)。 修正后的代码是这样的,工作起来很有魅力
Private Sub btn_openfiles_Click()
Dim strFilter As String
Dim strInputFileName As String
Dim varFiles As Variant
Dim a As Long
strFilter = ahtAddFilterItem(strFilter, "Images (*.PNG)", "*.PNG")
Me.test_filenames = ""
varFiles = ahtCommonFileOpenSave( _
Filter:=strFilter, _
OpenFile:=True, _
InitialDir:="T:\DTP\Programs\Default\", _
DialogTitle:="Please select an input file...", _
Flags:=ahtOFN_EXPLORER + ahtOFN_ALLOWMULTISELECT)
If IsArray(varFiles) Then
For a = 0 To UBound(varFiles)
Me.test_filenames = Me.test_filenames & varFiles(a) & vbCrLf
Next a
Else
Me.test_filenames = varFiles
End If
结束子文件将尺寸标准文件()更改为字符串
为尺寸标准文件
。如果选择了一个文件,此函数将返回一个字符串,如果选择了多个文件,则返回一个数组。另一个建议,请参阅: