Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将列表框链接到一个文件夹,该文件夹在发生更改时自动更新_Vba_Ms Access - Fatal编程技术网

Vba 如何将列表框链接到一个文件夹,该文件夹在发生更改时自动更新

Vba 如何将列表框链接到一个文件夹,该文件夹在发生更改时自动更新,vba,ms-access,Vba,Ms Access,我正在尝试将我的列表框链接到一个文件夹,如果用户将excel文件上载到该文件夹中,列表框将自动更新列表框。有没有关于如何启动此功能的想法?虽然可以使用VBA完成此操作,但允许用户浏览文件夹是正常的(通常经过过滤,仅显示特定类型的文件)。如果确实要这样做,则需要创建一个小型VBA函数,用于循环相关文件夹并创建一个文件名字符串: Public Function fListFiles(strFolder As String) As String On Error GoTo E_Handle

我正在尝试将我的
列表框
链接到一个文件夹,如果用户将excel文件上载到该文件夹中,列表框将自动更新
列表框
。有没有关于如何启动此功能的想法?

虽然可以使用VBA完成此操作,但允许用户浏览文件夹是正常的(通常经过过滤,仅显示特定类型的文件)。如果确实要这样做,则需要创建一个小型VBA函数,用于循环相关文件夹并创建一个文件名字符串:

Public Function fListFiles(strFolder As String) As String
    On Error GoTo E_Handle
    Dim strFile As String
    strFile = Dir(strFolder, vbNormal)
    Do
        If InStr(strFile, ".xl") > 0 Then
            fListFiles = fListFiles & strFile & ";"
        End If
        strFile = Dir
    Loop Until strFile = ""
    If Right(fListFiles, 1) = ";" Then fListFiles = Left(fListFiles, Len(fListFiles) - 1)
fExit:
    On Error Resume Next
    Exit Function
E_Handle:
    MsgBox Err.Description & vbCrLf & vbCrLf & "fListFiles", vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume fExit
End Function
然后,在表单中,将列表框的
RowSource
设置为“值列表”,将以下代码放入表单的
Timer
事件中:

Private Sub Form_Timer()
    Me!lstFile.RowSource = fListFiles("J:\downloads\")
End Sub
最后,将窗体的计时器间隔从0更改为0(60000是1分钟)


您好,

我已经试过了。它不起作用,你知道为什么吗。我将“.xl”改为“.xlsx”,因为我的文件扩展名是。我还将fListFiles目录更改为我想要的目录。但该列表仍然不会自动填充。我运行代码时也没有收到任何错误消息框。有几件事需要检查。首先,在目录路径的末尾是否有反斜杠?接下来,在即时窗口(通过Ctl-G访问)中,键入
?fListFiles(“J:\downloads\”)
,查看它是否返回预期的文件列表。接下来,将
Debug.Print fListFiles
放在
E\u Handle:
之前的过程中,查看它是否将相同的文本输出到即时窗口。它显示的错误是错误:5,无效的过程调用或参数fListFiles。我还将fListFiles更改为所需的文件夹,我要检查文件是否如下(“C:\Users\MOMUAB\Desktop\Polling\u Folders”),我已经完成了。我已返回了所需的值,但列表框仍不会自动更新。有什么想法吗?你需要在文件夹路径的末尾加一个反斜杠。